svn commit: r363366 - in stable/12: lib/libpmc lib/libpmc/pmu-events/arch/x86 sys/dev/hwpmc
Alexander Motin
mav at FreeBSD.org
Mon Jul 20 13:50:12 UTC 2020
Author: mav
Date: Mon Jul 20 13:50:10 2020
New Revision: 363366
URL: https://svnweb.freebsd.org/changeset/base/363366
Log:
MFC r363144, r363188: Add stepping to the kern.hwpmc.cpuid string on x86.
It follows the equivalent Linux change to be able to differentiate
skylakex and cascadelakex, sharing the same model but not stepping.
Modified:
stable/12/lib/libpmc/libpmc_pmu_util.c
stable/12/lib/libpmc/pmu-events/arch/x86/mapfile.csv
stable/12/sys/dev/hwpmc/hwpmc_amd.c
stable/12/sys/dev/hwpmc/hwpmc_intel.c
Directory Properties:
stable/12/ (props changed)
Modified: stable/12/lib/libpmc/libpmc_pmu_util.c
==============================================================================
--- stable/12/lib/libpmc/libpmc_pmu_util.c Mon Jul 20 13:37:14 2020 (r363365)
+++ stable/12/lib/libpmc/libpmc_pmu_util.c Mon Jul 20 13:50:10 2020 (r363366)
@@ -169,7 +169,7 @@ pmu_events_map_get(const char *cpuid)
{
regex_t re;
regmatch_t pmatch[1];
- size_t s, len;
+ size_t s;
char buf[64];
int match;
const struct pmu_events_map *pme;
@@ -193,8 +193,8 @@ pmu_events_map_get(const char *cpuid)
match = regexec(&re, buf, 1, pmatch, 0);
regfree(&re);
if (match == 0) {
- len = pmatch[0].rm_eo - pmatch[0].rm_so;
- if(len == strlen(buf))
+ if (pmatch[0].rm_so == 0 && (buf[pmatch[0].rm_eo] == 0
+ || buf[pmatch[0].rm_eo] == '-'))
return (pme);
}
}
Modified: stable/12/lib/libpmc/pmu-events/arch/x86/mapfile.csv
==============================================================================
--- stable/12/lib/libpmc/pmu-events/arch/x86/mapfile.csv Mon Jul 20 13:37:14 2020 (r363365)
+++ stable/12/lib/libpmc/pmu-events/arch/x86/mapfile.csv Mon Jul 20 13:50:10 2020 (r363366)
@@ -24,19 +24,15 @@ GenuineIntel-6-1E,v2,nehalemep,core
GenuineIntel-6-1F,v2,nehalemep,core
GenuineIntel-6-1A,v2,nehalemep,core
GenuineIntel-6-2E,v2,nehalemex,core
-GenuineIntel-6-4E,v24,skylake,core
-GenuineIntel-6-5E,v24,skylake,core
-GenuineIntel-6-8E,v24,skylake,core
-GenuineIntel-6-9E,v24,skylake,core
+GenuineIntel-6-[4589]E,v24,skylake,core
GenuineIntel-6-37,v13,silvermont,core
GenuineIntel-6-4D,v13,silvermont,core
GenuineIntel-6-4C,v13,silvermont,core
GenuineIntel-6-2A,v15,sandybridge,core
GenuineIntel-6-2C,v2,westmereep-dp,core
-GenuineIntel-6-2C,v2,westmereep-dp,core
GenuineIntel-6-25,v2,westmereep-sp,core
GenuineIntel-6-2F,v2,westmereex,core
-GenuineIntel-6-55,v1,skylakex,core
+GenuineIntel-6-55-[01234],v1,skylakex,core
GenuineIntel-6-55-[56789ABCDEF],v1,cascadelakex,core
GenuineIntel-6-7D,v1,icelake,core
GenuineIntel-6-7E,v1,icelake,core
Modified: stable/12/sys/dev/hwpmc/hwpmc_amd.c
==============================================================================
--- stable/12/sys/dev/hwpmc/hwpmc_amd.c Mon Jul 20 13:37:14 2020 (r363365)
+++ stable/12/sys/dev/hwpmc/hwpmc_amd.c Mon Jul 20 13:50:10 2020 (r363366)
@@ -1073,7 +1073,7 @@ pmc_amd_initialize(void)
enum pmc_cputype cputype;
struct pmc_mdep *pmc_mdep;
enum pmc_class class;
- int model;
+ int model, stepping;
char *name;
/*
@@ -1086,12 +1086,13 @@ 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",
- CPUID_TO_FAMILY(cpu_id), model);
+ snprintf(pmc_cpuid, sizeof(pmc_cpuid), "AuthenticAMD-%d-%02X-%X",
+ CPUID_TO_FAMILY(cpu_id), model, stepping);
if (CPUID_TO_FAMILY(cpu_id) == 0x18)
- snprintf(pmc_cpuid, sizeof(pmc_cpuid), "HygonGenuine-%d-%02X",
- CPUID_TO_FAMILY(cpu_id), model);
+ snprintf(pmc_cpuid, sizeof(pmc_cpuid), "HygonGenuine-%d-%02X-%X",
+ CPUID_TO_FAMILY(cpu_id), 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 Mon Jul 20 13:37:14 2020 (r363365)
+++ stable/12/sys/dev/hwpmc/hwpmc_intel.c Mon Jul 20 13:50:10 2020 (r363366)
@@ -94,8 +94,8 @@ pmc_intel_initialize(void)
model = ((cpu_id & 0xF0000) >> 12) | ((cpu_id & 0xF0) >> 4);
stepping = cpu_id & 0xF;
- snprintf(pmc_cpuid, sizeof(pmc_cpuid), "GenuineIntel-%d-%02X",
- (cpu_id & 0xF00) >> 8, model);
+ snprintf(pmc_cpuid, sizeof(pmc_cpuid), "GenuineIntel-%d-%02X-%X",
+ (cpu_id & 0xF00) >> 8, model, stepping);
switch (cpu_id & 0xF00) {
case 0x600: /* Pentium Pro, Celeron, Pentium II & III */
switch (model) {
More information about the svn-src-stable
mailing list