svn commit: r363629 - in stable/12/sys: dev/coretemp dev/hwpmc x86/include

Ryan Moeller freqlabs at FreeBSD.org
Tue Jul 28 02:53:46 UTC 2020


Author: freqlabs
Date: Tue Jul 28 02:53:44 2020
New Revision: 363629
URL: https://svnweb.freebsd.org/changeset/base/363629

Log:
  MFC r363206:
  
  hwpmc: Always set pmc_cpuid to something
  
  pmc_cpuid was uninitialized for most AMD processor families.  We can still
  populate this string for unimplemented families.
  
  Also added a CPUID_TO_STEPPING macro and converted existing code to use it.
  
  Reviewed by:    mav
  Sponsored by:   iXsystems, Inc.
  Differential Revision:  https://reviews.freebsd.org/D25673

Modified:
  stable/12/sys/dev/coretemp/coretemp.c
  stable/12/sys/dev/hwpmc/hwpmc_amd.c
  stable/12/sys/dev/hwpmc/hwpmc_intel.c
  stable/12/sys/x86/include/specialreg.h
Directory Properties:
  stable/12/   (props changed)

Modified: stable/12/sys/dev/coretemp/coretemp.c
==============================================================================
--- stable/12/sys/dev/coretemp/coretemp.c	Tue Jul 28 01:05:40 2020	(r363628)
+++ stable/12/sys/dev/coretemp/coretemp.c	Tue Jul 28 02:53:44 2020	(r363629)
@@ -165,7 +165,7 @@ coretemp_attach(device_t dev)
 	sc->sc_dev = dev;
 	pdev = device_get_parent(dev);
 	cpu_model = CPUID_TO_MODEL(cpu_id);
-	cpu_stepping = cpu_id & CPUID_STEPPING;
+	cpu_stepping = CPUID_TO_STEPPING(cpu_id);
 
 	/*
 	 * Some CPUs, namely the PIII, don't have thermal sensors, but

Modified: stable/12/sys/dev/hwpmc/hwpmc_amd.c
==============================================================================
--- stable/12/sys/dev/hwpmc/hwpmc_amd.c	Tue Jul 28 01:05:40 2020	(r363628)
+++ stable/12/sys/dev/hwpmc/hwpmc_amd.c	Tue Jul 28 02:53:44 2020	(r363629)
@@ -1073,7 +1073,7 @@ pmc_amd_initialize(void)
 	enum pmc_cputype cputype;
 	struct pmc_mdep *pmc_mdep;
 	enum pmc_class class;
-	int model, stepping;
+	int family, model, stepping;
 	char *name;
 
 	/*
@@ -1085,14 +1085,16 @@ pmc_amd_initialize(void)
 	 */
 
 	name = NULL;
-	model = ((cpu_id & 0xF0000) >> 12) | ((cpu_id & 0xF0) >> 4);
-	stepping = cpu_id & 0xF;
-	if (CPUID_TO_FAMILY(cpu_id) == 0x17)
-		snprintf(pmc_cpuid, sizeof(pmc_cpuid), "AuthenticAMD-%d-%02X-%X",
-				 CPUID_TO_FAMILY(cpu_id), model, stepping);
-	if (CPUID_TO_FAMILY(cpu_id) == 0x18)
+	family = CPUID_TO_FAMILY(cpu_id);
+	model = CPUID_TO_MODEL(cpu_id);
+	stepping = CPUID_TO_STEPPING(cpu_id);
+
+	if (family == 0x18)
 		snprintf(pmc_cpuid, sizeof(pmc_cpuid), "HygonGenuine-%d-%02X-%X",
-				 CPUID_TO_FAMILY(cpu_id), model, stepping);
+		    family, model, stepping);
+	else
+		snprintf(pmc_cpuid, sizeof(pmc_cpuid), "AuthenticAMD-%d-%02X-%X",
+		    family, model, stepping);
 
 	switch (cpu_id & 0xF00) {
 #if	defined(__i386__)

Modified: stable/12/sys/dev/hwpmc/hwpmc_intel.c
==============================================================================
--- stable/12/sys/dev/hwpmc/hwpmc_intel.c	Tue Jul 28 01:05:40 2020	(r363628)
+++ stable/12/sys/dev/hwpmc/hwpmc_intel.c	Tue Jul 28 02:53:44 2020	(r363629)
@@ -80,7 +80,7 @@ pmc_intel_initialize(void)
 {
 	struct pmc_mdep *pmc_mdep;
 	enum pmc_cputype cputype;
-	int error, model, nclasses, ncpus, stepping, verov;
+	int error, family, model, nclasses, ncpus, stepping, verov;
 
 	KASSERT(cpu_vendor_id == CPU_VENDOR_INTEL,
 	    ("[intel,%d] Initializing non-intel processor", __LINE__));
@@ -91,11 +91,13 @@ pmc_intel_initialize(void)
 	nclasses = 2;
 	error = 0;
 	verov = 0;
-	model = ((cpu_id & 0xF0000) >> 12) | ((cpu_id & 0xF0) >> 4);
-	stepping = cpu_id & 0xF;
+	family = CPUID_TO_FAMILY(cpu_id);
+	model = CPUID_TO_MODEL(cpu_id);
+	stepping = CPUID_TO_STEPPING(cpu_id);
 
 	snprintf(pmc_cpuid, sizeof(pmc_cpuid), "GenuineIntel-%d-%02X-%X",
-			 (cpu_id & 0xF00) >> 8, model, stepping);
+	    family, model, stepping);
+
 	switch (cpu_id & 0xF00) {
 	case 0x600:		/* Pentium Pro, Celeron, Pentium II & III */
 		switch (model) {

Modified: stable/12/sys/x86/include/specialreg.h
==============================================================================
--- stable/12/sys/x86/include/specialreg.h	Tue Jul 28 01:05:40 2020	(r363628)
+++ stable/12/sys/x86/include/specialreg.h	Tue Jul 28 02:53:44 2020	(r363629)
@@ -293,6 +293,7 @@
     ((((id) & CPUID_FAMILY) >> 8) + \
     (((id) & CPUID_EXT_FAMILY) >> 20))
 #endif
+#define CPUID_TO_STEPPING(id) ((id) & CPUID_STEPPING)
 
 /*
  * CPUID instruction 1 ebx info


More information about the svn-src-all mailing list