Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F144420741
D50278.id155237.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
5 KB
Referenced Files
None
Subscribers
None
D50278.id155237.diff
View Options
diff --git a/sys/dev/amdsmn/amdsmn.c b/sys/dev/amdsmn/amdsmn.c
--- a/sys/dev/amdsmn/amdsmn.c
+++ b/sys/dev/amdsmn/amdsmn.c
@@ -25,7 +25,7 @@
*/
/*
- * Driver for the AMD Family 15h and 17h CPU System Management Network.
+ * Driver for the AMD Family 15h, 17h, 19h, 1Ah CPU System Management Network.
*/
#include <sys/param.h>
@@ -62,6 +62,10 @@
#define PCI_DEVICE_ID_AMD_19H_M40H_ROOT 0x14b5
#define PCI_DEVICE_ID_AMD_19H_M60H_ROOT 0x14d8 /* Also F1AH M40H */
#define PCI_DEVICE_ID_AMD_19H_M70H_ROOT 0x14e8
+#define PCI_DEVICE_ID_AMD_1AH_M00H_ROOT 0x153a
+#define PCI_DEVICE_ID_AMD_1AH_M20H_ROOT 0x1507
+#define PCI_DEVICE_ID_AMD_1AH_M60H_ROOT 0x1122
+
struct pciid;
struct amdsmn_softc {
@@ -129,6 +133,24 @@
.amdsmn_addr_reg = F17H_SMN_ADDR_REG,
.amdsmn_data_reg = F17H_SMN_DATA_REG,
},
+ {
+ .amdsmn_vendorid = CPU_VENDOR_AMD,
+ .amdsmn_deviceid = PCI_DEVICE_ID_AMD_1AH_M00H_ROOT,
+ .amdsmn_addr_reg = F17H_SMN_ADDR_REG,
+ .amdsmn_data_reg = F17H_SMN_DATA_REG,
+ },
+ {
+ .amdsmn_vendorid = CPU_VENDOR_AMD,
+ .amdsmn_deviceid = PCI_DEVICE_ID_AMD_1AH_M20H_ROOT,
+ .amdsmn_addr_reg = F17H_SMN_ADDR_REG,
+ .amdsmn_data_reg = F17H_SMN_DATA_REG,
+ },
+ {
+ .amdsmn_vendorid = CPU_VENDOR_AMD,
+ .amdsmn_deviceid = PCI_DEVICE_ID_AMD_1AH_M60H_ROOT,
+ .amdsmn_addr_reg = F17H_SMN_ADDR_REG,
+ .amdsmn_data_reg = F17H_SMN_DATA_REG,
+ },
};
/*
@@ -216,7 +238,7 @@
default:
return (ENXIO);
}
- device_set_descf(dev, "AMD Family %xh System Management Network",
+ device_set_descf(dev, "AMD Family %02Xh System Management Network",
family);
return (BUS_PROBE_GENERIC);
diff --git a/sys/dev/amdtemp/amdtemp.c b/sys/dev/amdtemp/amdtemp.c
--- a/sys/dev/amdtemp/amdtemp.c
+++ b/sys/dev/amdtemp/amdtemp.c
@@ -117,6 +117,9 @@
#define DEVICEID_AMD_HOSTB19H_M40H_ROOT 0x14b5
#define DEVICEID_AMD_HOSTB19H_M60H_ROOT 0x14d8 /* Also F1AH M40H */
#define DEVICEID_AMD_HOSTB19H_M70H_ROOT 0x14e8
+#define DEVICEID_AMD_HOSTB1AH_M00H_ROOT 0x153a
+#define DEVICEID_AMD_HOSTB1AH_M20H_ROOT 0x1507
+#define DEVICEID_AMD_HOSTB1AH_M60H_ROOT 0x1122
static const struct amdtemp_product {
uint16_t amdtemp_vendorid;
@@ -145,6 +148,9 @@
{ VENDORID_AMD, DEVICEID_AMD_HOSTB19H_M40H_ROOT, false },
{ VENDORID_AMD, DEVICEID_AMD_HOSTB19H_M60H_ROOT, false },
{ VENDORID_AMD, DEVICEID_AMD_HOSTB19H_M70H_ROOT, false },
+ { VENDORID_AMD, DEVICEID_AMD_HOSTB1AH_M00H_ROOT, false },
+ { VENDORID_AMD, DEVICEID_AMD_HOSTB1AH_M20H_ROOT, false },
+ { VENDORID_AMD, DEVICEID_AMD_HOSTB1AH_M60H_ROOT, false },
};
/*
@@ -166,7 +172,7 @@
#define AMDTEMP_15H_M60H_REPTMP_CTRL 0xd8200ca4
/*
- * Reported Temperature, Family 17h
+ * Reported Temperature, Family 17h - 1Ah
*
* According to AMD OSRR for 17H, section 4.2.1, bits 31-21 of this register
* provide the current temp. bit 19, when clear, means the temp is reported in
@@ -294,21 +300,33 @@
static int
amdtemp_probe(device_t dev)
{
- uint32_t family, model;
+ uint32_t family, model, stepping;
- if (resource_disabled("amdtemp", 0))
+ if (resource_disabled("amdtemp", 0)) {
+ if (bootverbose)
+ device_printf(dev, "Resource disabled\n");
return (ENXIO);
- if (!amdtemp_match(device_get_parent(dev), NULL))
+ }
+ if (!amdtemp_match(device_get_parent(dev), NULL)) {
+ if (bootverbose)
+ device_printf(dev, "amdtemp_match() failed\n");
return (ENXIO);
+ }
family = CPUID_TO_FAMILY(cpu_id);
model = CPUID_TO_MODEL(cpu_id);
+ stepping = CPUID_TO_STEPPING(cpu_id);
switch (family) {
case 0x0f:
- if ((model == 0x04 && (cpu_id & CPUID_STEPPING) == 0) ||
- (model == 0x05 && (cpu_id & CPUID_STEPPING) <= 1))
+ if ((model == 0x04 && stepping == 0) ||
+ (model == 0x05 && stepping <= 1)) {
+ if (bootverbose)
+ device_printf(dev,
+ "Unsupported (Family=%02Xh, Model=%02Xh, Stepping=%02Xh)\n",
+ family, model, stepping);
return (ENXIO);
+ }
break;
case 0x10:
case 0x11:
@@ -323,7 +341,8 @@
default:
return (ENXIO);
}
- device_set_desc(dev, "AMD CPU On-Die Thermal Sensors");
+ device_set_descf(dev, "AMD Family %02Xh CPU On-Die Thermal Sensors",
+ family);
return (BUS_PROBE_GENERIC);
}
@@ -484,7 +503,7 @@
needsmn = true;
break;
default:
- device_printf(dev, "Bogus family 0x%x\n", family);
+ device_printf(dev, "Bogus family %02Xh\n", family);
return (ENXIO);
}
@@ -493,7 +512,7 @@
device_get_parent(dev), "amdsmn", -1);
if (sc->sc_smn == NULL) {
if (bootverbose)
- device_printf(dev, "No SMN device found\n");
+ device_printf(dev, "No amdsmn(4) device found\n");
return (ENXIO);
}
}
@@ -509,7 +528,7 @@
device_printf(dev,
"Erratum 319: temperature measurement may be inaccurate\n");
if (bootverbose)
- device_printf(dev, "Found %d cores and %d sensors.\n",
+ device_printf(dev, "Found %d cores and %d sensors\n",
sc->sc_ncores,
sc->sc_ntemps > 1 ? sc->sc_ntemps * sc->sc_ncores : 1);
@@ -857,7 +876,7 @@
break;
default:
device_printf(dev,
- "Unrecognized Family 17h Model: %02xh\n", model);
+ "Unrecognized Family 17h Model: %02Xh\n", model);
return;
}
@@ -877,7 +896,7 @@
maxreg = 8;
_Static_assert((int)NUM_CCDS >= 8, "");
break;
- case 0x10 ... 0x1f:
+ case 0x10 ... 0x1f: /* Zen4 EPYC "Genoa" */
sc->sc_temp_base = AMDTEMP_ZEN4_10H_CCD_TMP_BASE;
maxreg = 12;
_Static_assert((int)NUM_CCDS >= 12, "");
@@ -891,7 +910,7 @@
break;
default:
device_printf(dev,
- "Unrecognized Family 19h Model: %02xh\n", model);
+ "Unrecognized Family 19h Model: %02Xh\n", model);
return;
}
@@ -905,14 +924,16 @@
uint32_t maxreg;
switch (model) {
+ case 0x00 ... 0x2f: /* Zen5 EPYC "Turin" */
case 0x40 ... 0x4f: /* Zen5 Ryzen "Granite Ridge" */
+ case 0x60 ... 0x7f: /* ??? */
sc->sc_temp_base = AMDTEMP_ZEN4_CCD_TMP_BASE;
maxreg = 8;
_Static_assert((int)NUM_CCDS >= 8, "");
break;
default:
device_printf(dev,
- "Unrecognized Family 1ah Model: %02xh\n", model);
+ "Unrecognized Family 1Ah Model: %02Xh\n", model);
return;
}
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Mon, Feb 9, 8:40 AM (4 h, 10 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
28478642
Default Alt Text
D50278.id155237.diff (5 KB)
Attached To
Mode
D50278: amdsmn(4), amdtemp(4): Add support for AMD Family 1Ah (Zen5) CPUs
Attached
Detach File
Event Timeline
Log In to Comment