summaryrefslogtreecommitdiff
path: root/usr/src/uts/intel
diff options
context:
space:
mode:
authorDan McDonald <danmcd@joyent.com>2021-01-04 14:49:49 -0500
committerDan McDonald <danmcd@joyent.com>2021-01-04 14:49:51 -0500
commit77a2bdc4fcb9b0ace15a0459d94a9c4ef6203329 (patch)
treea8d3525cf81df97dda88e07b2a591db817c3c6c2 /usr/src/uts/intel
parentad472cc25e94c756bee73f18d46a715cc641f880 (diff)
parent0a554e9f2c0d440dc40a97fae2d18f1d428ca786 (diff)
downloadillumos-joyent-77a2bdc4fcb9b0ace15a0459d94a9c4ef6203329.tar.gz
[illumos-gate merge]
commit 0a554e9f2c0d440dc40a97fae2d18f1d428ca786 13404 man page spelling errors commit 9f76c6ed5b6ee0cc0bf631daca15ac3dc5fc70c4 13400 zfs-tests: implicit conversion from 'enum dmu_objset_type' to 'enum lzc_dataset_type' commit ef96fc31fc4f4306719704352d5c3e33573c039f 13399 zfs: error: implicit conversion from 'boolean_t' to 'ds_hold_flags_t' commit 56870e8c76c2675bcef1fcee5d519585ce9c768e 13393 cheetah: case value '47616' not in enumerated type commit 8247326397b1a16f37e70cf13f5b7a4f50d06712 13403 zfs: symbol 'g_zfs' is multiply-defined commit 436b964b19ef06803ad9165542d80d9d731d6486 13402 zpool: symbol 'g_zfs' is multiply-defined commit 99308ed0417a2b8ab73c5856a8a5345ce2a7aea7 13396 PoolsExecption typo in resource pools javadoc commit 1575b751c16622553e958c1e5c45e59c86b15c6e 13392 px: case value '3' not in enumerated type commit 9b0429a10eec9313ec782d8421272aff70adbfdc 13339 Add support for Hygon Dhyana Family 18h processor commit d20422bd742384b77102bb3bd09e0dc4b7372e50 13351 loader: vbe_find_mode_xydm() is using wrong safety and iteration is buggy commit 174b8e455f9a6974e69fa4e28792580acde0892d 13311 uptime(1) dazed and confused for a minute after boot commit f816551bb187d104fbf2757703d7a5d2189a3a18 13401 eeprom: 'lv' may be used uninitialized in this function commit 5e96da73c99d9d17ff5a58b793fff2ab6dcadf25 13391 fm: build errors with gcc 7 on SPARC commit 58b55f701e285559e4799354996fd284238ed0d4 13398 libstand: xdrproc_t should return bool commit c6a28d7650029501a356f7b75b2a10a5c4430cef 13394 fhc: case value '4294967295' not in enumerated type commit 58d4b16fe601073f2408de78e3db7e9bfa9abfd2 13355 remove topo module warning gags commit 1473b8d60e902819558a8b0e8a257eb0d754c3c3 13388 ZFS list bookmark not working on zvols commit 4bba12ca5cd6f92aaf0d4c0d19d05528110bc095 13368 libbe_py should support temporary BE activation commit a92282e44f968185a6bba094d1e5fece2da819cf 13376 fm: variable may be used uninitialized commit 8b1df8bf71b7b62e7e4d46fe6b457d4d6447b2b8 13367 beadm activate -t should not promote new BE datasets commit 9704bf7fb82e71b685e194a967937ff03843e73a 13317 Decrease contention on dn_struct_rwlock commit 88a08813800ed7ba7c927986421cee437f7f2233 13363 ctfconvert could support more granular ignore for missing debug data commit 3dd4cd56e7843e01a8ab147a0d102cd4f6d732c1 13342 ctfconvert could encode _Float128 for 32-bit objects commit 73197b540cc5f0434c409b68ca9e1a514a6ce91b 13336 ctfconvert should be able to unconditionally attempt conversion commit dd4422524768709a579a2a93a10c78a88a6b0ecb 13280 CTF: provide option to truncate and continue Conflicts & other fixes (with help from Jason King <jbk@joyent.com>): usr/src/lib/fm/topo/modules/common/ipmi/ipmi_enum.c usr/src/lib/libctf/common/ctf_convert.c usr/src/lib/libctf/common/ctf_lib.c usr/src/lib/libctf/common/libctf.h usr/src/lib/libproc/common/Psymtab.c usr/src/man/man1/ld.so.1.1 usr/src/man/man4/process.4
Diffstat (limited to 'usr/src/uts/intel')
-rw-r--r--usr/src/uts/intel/ia32/os/cpc_subr.c3
-rw-r--r--usr/src/uts/intel/io/amdzen/amdzen.c12
-rw-r--r--usr/src/uts/intel/io/amdzen/amdzen.h5
-rw-r--r--usr/src/uts/intel/pcbe/opteron_pcbe.c10
-rw-r--r--usr/src/uts/intel/sys/x86_archext.h18
5 files changed, 39 insertions, 9 deletions
diff --git a/usr/src/uts/intel/ia32/os/cpc_subr.c b/usr/src/uts/intel/ia32/os/cpc_subr.c
index f7b86fd602..a74dfd77bc 100644
--- a/usr/src/uts/intel/ia32/os/cpc_subr.c
+++ b/usr/src/uts/intel/ia32/os/cpc_subr.c
@@ -140,7 +140,8 @@ kcpc_hw_init(cpu_t *cp)
strands_perfmon_shared = 1;
}
}
- } else if (cpuid_getvendor(cpu[0]) == X86_VENDOR_AMD) {
+ } else if (cpuid_getvendor(cpu[0]) == X86_VENDOR_AMD ||
+ cpuid_getvendor(cpu[0]) == X86_VENDOR_HYGON) {
/*
* On AMD systems with HT, all of the performance
* monitors exist on a per-logical CPU basis.
diff --git a/usr/src/uts/intel/io/amdzen/amdzen.c b/usr/src/uts/intel/io/amdzen/amdzen.c
index ac6ce9c94f..bd023a2edf 100644
--- a/usr/src/uts/intel/io/amdzen/amdzen.c
+++ b/usr/src/uts/intel/io/amdzen/amdzen.c
@@ -624,7 +624,7 @@ amdzen_stub_scan_cb(dev_info_t *dip, void *arg)
return (DDI_WALK_CONTINUE);
}
- if (vid != AMDZEN_PCI_VID_AMD) {
+ if (vid != AMDZEN_PCI_VID_AMD && vid != AMDZEN_PCI_VID_HYGON) {
return (DDI_WALK_CONTINUE);
}
@@ -737,9 +737,10 @@ amdzen_attach_stub(dev_info_t *dip, ddi_attach_cmd_t cmd)
return (DDI_FAILURE);
}
- if (vid != AMDZEN_PCI_VID_AMD) {
- dev_err(dip, CE_WARN, "expected AMD vendor ID (0x%x), found "
- "0x%x", AMDZEN_PCI_VID_AMD, vid);
+ if (vid != AMDZEN_PCI_VID_AMD && vid != AMDZEN_PCI_VID_HYGON) {
+ dev_err(dip, CE_WARN, "expected vendor ID (0x%x), found 0x%x",
+ cpuid_getvendor(CPU) == X86_VENDOR_HYGON ?
+ AMDZEN_PCI_VID_HYGON : AMDZEN_PCI_VID_AMD, vid);
return (DDI_FAILURE);
}
@@ -996,7 +997,8 @@ _init(void)
{
int ret;
- if (cpuid_getvendor(CPU) != X86_VENDOR_AMD) {
+ if (cpuid_getvendor(CPU) != X86_VENDOR_AMD &&
+ cpuid_getvendor(CPU) != X86_VENDOR_HYGON) {
return (ENOTSUP);
}
diff --git a/usr/src/uts/intel/io/amdzen/amdzen.h b/usr/src/uts/intel/io/amdzen/amdzen.h
index 8150495911..6ba5266bd3 100644
--- a/usr/src/uts/intel/io/amdzen/amdzen.h
+++ b/usr/src/uts/intel/io/amdzen/amdzen.h
@@ -200,6 +200,11 @@ typedef enum {
*/
#define AMDZEN_PCI_VID_AMD 0x1022
+/*
+ * Hygon PCI ID for reference
+ */
+#define AMDZEN_PCI_VID_HYGON 0x1d94
+
typedef enum {
AMDZEN_STUB_TYPE_DF,
AMDZEN_STUB_TYPE_NB
diff --git a/usr/src/uts/intel/pcbe/opteron_pcbe.c b/usr/src/uts/intel/pcbe/opteron_pcbe.c
index c4496bf8ca..8d567daa64 100644
--- a/usr/src/uts/intel/pcbe/opteron_pcbe.c
+++ b/usr/src/uts/intel/pcbe/opteron_pcbe.c
@@ -547,7 +547,8 @@ opt_pcbe_init(void)
* loads this module based on its name in the module directory, but it
* could have been renamed.
*/
- if (cpuid_getvendor(CPU) != X86_VENDOR_AMD || amd_family < 0xf)
+ if ((cpuid_getvendor(CPU) != X86_VENDOR_AMD || amd_family < 0xf) &&
+ cpuid_getvendor(CPU) != X86_VENDOR_HYGON)
return (-1);
if (amd_family == 0xf) {
@@ -556,7 +557,9 @@ opt_pcbe_init(void)
"AMD Opteron & Athlon64");
} else {
(void) snprintf(amd_pcbe_impl_name, sizeof (amd_pcbe_impl_name),
- "AMD Family %02xh", amd_family);
+ "%s Family %02xh",
+ cpuid_getvendor(CPU) == X86_VENDOR_HYGON ? "Hygon" : "AMD",
+ amd_family);
}
/*
@@ -598,7 +601,8 @@ opt_pcbe_init(void)
amd_pcbe_cpuref = amd_fam_11h_bkdg;
amd_events = family_11h_events;
amd_generic_events = opt_generic_events;
- } else if (amd_family == 0x17 && amd_model <= 0x2f) {
+ } else if ((amd_family == 0x17 && amd_model <= 0x2f) ||
+ amd_family == 0x18) {
amd_pcbe_cpuref = amd_fam_17h_zen1_reg;
amd_events = opteron_pcbe_f17h_zen1_events;
amd_generic_events = family_17h_zen1_papi_events;
diff --git a/usr/src/uts/intel/sys/x86_archext.h b/usr/src/uts/intel/sys/x86_archext.h
index b75ab18f5e..2ec543677b 100644
--- a/usr/src/uts/intel/sys/x86_archext.h
+++ b/usr/src/uts/intel/sys/x86_archext.h
@@ -804,6 +804,9 @@ extern "C" {
#define X86_VENDOR_NSC 10
#define X86_VENDORSTR_NSC "Geode by NSC"
+#define X86_VENDOR_HYGON 11
+#define X86_VENDORSTR_HYGON "HygonGenuine"
+
/*
* Vendor string max len + \0
*/
@@ -968,6 +971,12 @@ extern "C" {
_X86_CHIPREV_MKREV(X86_VENDOR_AMD, 0x17, 0x0009)
/*
+ * Definitions for Hygon Family 0x18
+ */
+#define X86_CHIPREV_HYGON_18_DN_A1 \
+ _X86_CHIPREV_MKREV(X86_VENDOR_HYGON, 0x18, 0x0001)
+
+/*
* Various socket/package types, extended as the need to distinguish
* a new type arises. The top 8 byte identfies the vendor and the
* remaining 24 bits describe 24 socket types.
@@ -1026,6 +1035,15 @@ extern "C" {
#define X86_SOCKET_STRX4 _X86_SOCKET_MKVAL(X86_VENDOR_AMD, 0x23)
#define X86_NUM_SOCKETS_AMD 0x24
+/*
+ * Hygon socket types
+ */
+#define X86_SOCKET_SL1 _X86_SOCKET_MKVAL(X86_VENDOR_HYGON, 0x01)
+#define X86_SOCKET_SL1R2 _X86_SOCKET_MKVAL(X86_VENDOR_HYGON, 0x02)
+#define X86_SOCKET_DM1 _X86_SOCKET_MKVAL(X86_VENDOR_HYGON, 0x03)
+#define X86_NUM_SOCKETS_HYGON 0x04
+
+#define X86_NUM_SOCKETS (X86_NUM_SOCKETS_AMD + X86_NUM_SOCKETS_HYGON)
/*
* Definitions for Intel processor models. These are all for Family 6