Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F177563292
D60102.1794738639.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Authored By
Unknown
Size
2 KB
Referenced Files
None
Subscribers
None
D60102.1794738639.diff
View Options
diff --git a/lib/libpmc/libpmc.c b/lib/libpmc/libpmc.c
--- a/lib/libpmc/libpmc.c
+++ b/lib/libpmc/libpmc.c
@@ -1834,6 +1834,12 @@
PMC_MDEP_INIT(e500);
break;
#endif
+ case PMC_CPU_AMD_ZEN:
+ /*
+ * Won't use these static aliases; see instead
+ * pmu_amd_alias_table[] in libpmc_pmu_util.c.
+ */
+ break;
default:
/*
* Some kind of CPU this version of the library knows nothing
diff --git a/lib/libpmc/pmc.3 b/lib/libpmc/pmc.3
--- a/lib/libpmc/pmc.3
+++ b/lib/libpmc/pmc.3
@@ -21,7 +21,7 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
-.Dd June 23, 2023
+.Dd September 28, 2026
.Dt PMC 3
.Os
.Sh NAME
@@ -131,8 +131,12 @@
.Pp
.Bl -tag -width "Li PMC_CPU_ARMV7_CORTEX_A15" -compact
.It Li PMC_CPU_AMD_K8
-.Tn "AMD Athlon64"
-CPUs.
+Legacy
+.Tn "AMD"
+CPUs (families 0Fh-16h).
+.It Li PMC_CPU_AMD_ZEN
+.Tn "AMD Zen"
+CPUs (families 17h+).
.It Li PMC_CPU_ARMV7_CORTEX_A5
.Tn ARMv7
.Tn Cortex A5
diff --git a/sys/dev/hwpmc/hwpmc_amd.c b/sys/dev/hwpmc/hwpmc_amd.c
--- a/sys/dev/hwpmc/hwpmc_amd.c
+++ b/sys/dev/hwpmc/hwpmc_amd.c
@@ -1034,18 +1034,18 @@
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",
- family, model, stepping);
- else
- snprintf(pmc_cpuid, sizeof(pmc_cpuid), "AuthenticAMD-%d-%02X-%X",
- family, model, stepping);
-
- switch (cpu_id & 0xF00) {
- case 0xF00: /* Athlon64/Opteron processor */
+ if (family >= 0x0f && family <= 0x16) {
+ /* Legacy CPU. */
cputype = PMC_CPU_AMD_K8;
- break;
- default:
+ } else if (family >= 0x17) {
+ cputype = PMC_CPU_AMD_ZEN;
+ if (family == 0x18)
+ snprintf(pmc_cpuid, sizeof(pmc_cpuid),
+ "HygonGenuine-%d-%02X-%X", family, model, stepping);
+ else
+ snprintf(pmc_cpuid, sizeof(pmc_cpuid),
+ "AuthenticAMD-%d-%02X-%X", family, model, stepping);
+ } else {
printf("pmc: Unknown AMD CPU %x %d-%d.\n", cpu_id, family,
model);
return (NULL);
@@ -1231,7 +1231,11 @@
pcd->pcd_ri = pmc_mdep->pmd_npmc;
pcd->pcd_width = 48;
- pcd->pcd_allocate_pmc = amd_allocate_pmc;
+ if (cputype == PMC_CPU_AMD_K8)
+ pcd->pcd_allocate_pmc = amd_allocate_legacy_pmc;
+ else
+ pcd->pcd_allocate_pmc = amd_allocate_pmc;
+
pcd->pcd_config_pmc = amd_config_pmc;
pcd->pcd_describe = amd_describe;
pcd->pcd_get_config = amd_get_config;
diff --git a/sys/sys/pmc.h b/sys/sys/pmc.h
--- a/sys/sys/pmc.h
+++ b/sys/sys/pmc.h
@@ -81,7 +81,8 @@
* Please keep the pmc(3) manual page in sync with this list.
*/
#define __PMC_CPUS() \
- __PMC_CPU(AMD_K8, 0x01, "AMD K8") \
+ __PMC_CPU(AMD_K8, 0x01, "AMD K8 (legacy AMD)") \
+ __PMC_CPU(AMD_ZEN, 0x02, "AMD Zen") \
__PMC_CPU(INTEL_CORE, 0x87, "Intel Core Solo/Duo") \
__PMC_CPU(INTEL_CORE2, 0x88, "Intel Core2") \
__PMC_CPU(INTEL_CORE2EXTREME, 0x89, "Intel Core2 Extreme") \
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Sun, Nov 15, 10:30 AM (2 h, 29 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
41741694
Default Alt Text
D60102.1794738639.diff (2 KB)
Attached To
Mode
D60102: pmc: differentiate AMD Zen and legacy CPUs
Attached
Detach File
Event Timeline