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 MFC after: 2 weeks Sponsored by: iXsystems, Inc. Differential Revision: https://reviews.freebsd.org/D25673
This commit is contained in:
parent
513365d584
commit
4863432c83
@ -166,7 +166,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
|
||||
|
@ -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__)
|
||||
|
@ -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) {
|
||||
|
@ -280,6 +280,7 @@
|
||||
((((id) & CPUID_FAMILY) >> 8) + \
|
||||
(((id) & CPUID_EXT_FAMILY) >> 20))
|
||||
#endif
|
||||
#define CPUID_TO_STEPPING(id) ((id) & CPUID_STEPPING)
|
||||
|
||||
/*
|
||||
* CPUID instruction 1 ebx info
|
||||
|
Loading…
Reference in New Issue
Block a user