From: Kan Liang <[email protected]>

[ Upstream commit 8191016a026b8dfbb14dea64efc8e723ee99fe65 ]

The "MiB" result of the IMC free-running bandwidth events,
uncore_imc_free_running/read/ and uncore_imc_free_running/write/ are 16
times too small.

The "MiB" value equals the raw IMC free-running bandwidth counter value
times a "scale" which is inaccurate.

The IMC free-running bandwidth events should be incremented per 64B
cache line, not DWs (4 bytes). The "scale" should be 6.103515625e-5.
Fix the "scale" for both Snow Ridge and Ice Lake.

Fixes: 2b3b76b5ec67 ("perf/x86/intel/uncore: Add Ice Lake server uncore 
support")
Fixes: ee49532b38dd ("perf/x86/intel/uncore: Add IMC uncore support for Snow 
Ridge")
Signed-off-by: Kan Liang <[email protected]>
Signed-off-by: Peter Zijlstra (Intel) <[email protected]>
Link: https://lkml.kernel.org/r/[email protected]
Signed-off-by: Sasha Levin <[email protected]>
---
 arch/x86/events/intel/uncore_snbep.c | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/arch/x86/events/intel/uncore_snbep.c 
b/arch/x86/events/intel/uncore_snbep.c
index 07652fa20ebbe..6a03fe8054a81 100644
--- a/arch/x86/events/intel/uncore_snbep.c
+++ b/arch/x86/events/intel/uncore_snbep.c
@@ -4550,10 +4550,10 @@ static struct uncore_event_desc 
snr_uncore_imc_freerunning_events[] = {
        INTEL_UNCORE_EVENT_DESC(dclk,           "event=0xff,umask=0x10"),
 
        INTEL_UNCORE_EVENT_DESC(read,           "event=0xff,umask=0x20"),
-       INTEL_UNCORE_EVENT_DESC(read.scale,     "3.814697266e-6"),
+       INTEL_UNCORE_EVENT_DESC(read.scale,     "6.103515625e-5"),
        INTEL_UNCORE_EVENT_DESC(read.unit,      "MiB"),
        INTEL_UNCORE_EVENT_DESC(write,          "event=0xff,umask=0x21"),
-       INTEL_UNCORE_EVENT_DESC(write.scale,    "3.814697266e-6"),
+       INTEL_UNCORE_EVENT_DESC(write.scale,    "6.103515625e-5"),
        INTEL_UNCORE_EVENT_DESC(write.unit,     "MiB"),
        { /* end: all zeroes */ },
 };
@@ -5009,17 +5009,17 @@ static struct uncore_event_desc 
icx_uncore_imc_freerunning_events[] = {
        INTEL_UNCORE_EVENT_DESC(dclk,                   
"event=0xff,umask=0x10"),
 
        INTEL_UNCORE_EVENT_DESC(read,                   
"event=0xff,umask=0x20"),
-       INTEL_UNCORE_EVENT_DESC(read.scale,             "3.814697266e-6"),
+       INTEL_UNCORE_EVENT_DESC(read.scale,             "6.103515625e-5"),
        INTEL_UNCORE_EVENT_DESC(read.unit,              "MiB"),
        INTEL_UNCORE_EVENT_DESC(write,                  
"event=0xff,umask=0x21"),
-       INTEL_UNCORE_EVENT_DESC(write.scale,            "3.814697266e-6"),
+       INTEL_UNCORE_EVENT_DESC(write.scale,            "6.103515625e-5"),
        INTEL_UNCORE_EVENT_DESC(write.unit,             "MiB"),
 
        INTEL_UNCORE_EVENT_DESC(ddrt_read,              
"event=0xff,umask=0x30"),
-       INTEL_UNCORE_EVENT_DESC(ddrt_read.scale,        "3.814697266e-6"),
+       INTEL_UNCORE_EVENT_DESC(ddrt_read.scale,        "6.103515625e-5"),
        INTEL_UNCORE_EVENT_DESC(ddrt_read.unit,         "MiB"),
        INTEL_UNCORE_EVENT_DESC(ddrt_write,             
"event=0xff,umask=0x31"),
-       INTEL_UNCORE_EVENT_DESC(ddrt_write.scale,       "3.814697266e-6"),
+       INTEL_UNCORE_EVENT_DESC(ddrt_write.scale,       "6.103515625e-5"),
        INTEL_UNCORE_EVENT_DESC(ddrt_write.unit,        "MiB"),
        { /* end: all zeroes */ },
 };
-- 
2.25.1



Reply via email to