Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 20 Jul 2020 13:50:10 +0000 (UTC)
From:      Alexander Motin <mav@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-12@freebsd.org
Subject:   svn commit: r363366 - in stable/12: lib/libpmc lib/libpmc/pmu-events/arch/x86 sys/dev/hwpmc
Message-ID:  <202007201350.06KDoAb2091306@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
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) {



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202007201350.06KDoAb2091306>