Page MenuHomeFreeBSD

D55607.id172989.diff
No OneTemporary

D55607.id172989.diff

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
@@ -655,7 +655,24 @@
KASSERT(ri >= 0 && ri < amd_npmcs,
("[amd,%d] ri %d out of range", __LINE__, ri));
- *msr = amd_pmcdesc[ri].pm_perfctr - AMD_PMC_PERFCTR_0;
+ switch (amd_pmcdesc[ri].pm_subclass) {
+ case PMC_AMD_SUB_CLASS_CORE:
+ if (amd_pmcdesc[ri].pm_perfctr >= AMD_PMC_CORE_BASE)
+ *msr = (amd_pmcdesc[ri].pm_perfctr -
+ AMD_PMC_CORE_BASE) / 2;
+ else
+ *msr = amd_pmcdesc[ri].pm_perfctr -
+ AMD_PMC_PERFCTR_0;
+ break;
+ case PMC_AMD_SUB_CLASS_L3_CACHE:
+ *msr = (amd_pmcdesc[ri].pm_perfctr - AMD_PMC_L3_BASE) / 2;
+ break;
+ case PMC_AMD_SUB_CLASS_DATA_FABRIC:
+ *msr = (amd_pmcdesc[ri].pm_perfctr - AMD_PMC_DF_BASE) / 2;
+ break;
+ default:
+ return (EINVAL);
+ }
return (0);
}

File Metadata

Mime Type
text/plain
Expires
Thu, Mar 5, 4:35 PM (21 h, 44 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
29177229
Default Alt Text
D55607.id172989.diff (860 B)

Event Timeline