perf/x86/intel/uncore: Fix the scale of IIO free running counters on ICX
authorKan Liang <kan.liang@linux.intel.com>
Wed, 16 Apr 2025 14:24:25 +0000 (07:24 -0700)
committerIngo Molnar <mingo@kernel.org>
Thu, 17 Apr 2025 10:57:29 +0000 (12:57 +0200)
There was a mistake in the ICX uncore spec too. The counter increments
for every 32 bytes rather than 4 bytes.

The same as SNR, there are 1 ioclk and 8 IIO bandwidth in free running
counters. Reuse the snr_uncore_iio_freerunning_events().

Fixes: 2b3b76b5ec67 ("perf/x86/intel/uncore: Add Ice Lake server uncore support")
Reported-by: Tang Jun <dukang.tj@alibaba-inc.com>
Signed-off-by: Kan Liang <kan.liang@linux.intel.com>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Acked-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: stable@vger.kernel.org
Link: https://lore.kernel.org/r/20250416142426.3933977-2-kan.liang@linux.intel.com
arch/x86/events/intel/uncore_snbep.c

index 35da2c486e8d8a7ca96297ab366623a0df1a3acf..fb08911a1cf64ef2fbfab0f2ee1f1aa385e2d83e 100644 (file)
@@ -5485,37 +5485,6 @@ static struct freerunning_counters icx_iio_freerunning[] = {
        [ICX_IIO_MSR_BW_IN]     = { 0xaa0, 0x1, 0x10, 8, 48, icx_iio_bw_freerunning_box_offsets },
 };
 
-static struct uncore_event_desc icx_uncore_iio_freerunning_events[] = {
-       /* Free-Running IIO CLOCKS Counter */
-       INTEL_UNCORE_EVENT_DESC(ioclk,                  "event=0xff,umask=0x10"),
-       /* Free-Running IIO BANDWIDTH IN Counters */
-       INTEL_UNCORE_EVENT_DESC(bw_in_port0,            "event=0xff,umask=0x20"),
-       INTEL_UNCORE_EVENT_DESC(bw_in_port0.scale,      "3.814697266e-6"),
-       INTEL_UNCORE_EVENT_DESC(bw_in_port0.unit,       "MiB"),
-       INTEL_UNCORE_EVENT_DESC(bw_in_port1,            "event=0xff,umask=0x21"),
-       INTEL_UNCORE_EVENT_DESC(bw_in_port1.scale,      "3.814697266e-6"),
-       INTEL_UNCORE_EVENT_DESC(bw_in_port1.unit,       "MiB"),
-       INTEL_UNCORE_EVENT_DESC(bw_in_port2,            "event=0xff,umask=0x22"),
-       INTEL_UNCORE_EVENT_DESC(bw_in_port2.scale,      "3.814697266e-6"),
-       INTEL_UNCORE_EVENT_DESC(bw_in_port2.unit,       "MiB"),
-       INTEL_UNCORE_EVENT_DESC(bw_in_port3,            "event=0xff,umask=0x23"),
-       INTEL_UNCORE_EVENT_DESC(bw_in_port3.scale,      "3.814697266e-6"),
-       INTEL_UNCORE_EVENT_DESC(bw_in_port3.unit,       "MiB"),
-       INTEL_UNCORE_EVENT_DESC(bw_in_port4,            "event=0xff,umask=0x24"),
-       INTEL_UNCORE_EVENT_DESC(bw_in_port4.scale,      "3.814697266e-6"),
-       INTEL_UNCORE_EVENT_DESC(bw_in_port4.unit,       "MiB"),
-       INTEL_UNCORE_EVENT_DESC(bw_in_port5,            "event=0xff,umask=0x25"),
-       INTEL_UNCORE_EVENT_DESC(bw_in_port5.scale,      "3.814697266e-6"),
-       INTEL_UNCORE_EVENT_DESC(bw_in_port5.unit,       "MiB"),
-       INTEL_UNCORE_EVENT_DESC(bw_in_port6,            "event=0xff,umask=0x26"),
-       INTEL_UNCORE_EVENT_DESC(bw_in_port6.scale,      "3.814697266e-6"),
-       INTEL_UNCORE_EVENT_DESC(bw_in_port6.unit,       "MiB"),
-       INTEL_UNCORE_EVENT_DESC(bw_in_port7,            "event=0xff,umask=0x27"),
-       INTEL_UNCORE_EVENT_DESC(bw_in_port7.scale,      "3.814697266e-6"),
-       INTEL_UNCORE_EVENT_DESC(bw_in_port7.unit,       "MiB"),
-       { /* end: all zeroes */ },
-};
-
 static struct intel_uncore_type icx_uncore_iio_free_running = {
        .name                   = "iio_free_running",
        .num_counters           = 9,
@@ -5523,7 +5492,7 @@ static struct intel_uncore_type icx_uncore_iio_free_running = {
        .num_freerunning_types  = ICX_IIO_FREERUNNING_TYPE_MAX,
        .freerunning            = icx_iio_freerunning,
        .ops                    = &skx_uncore_iio_freerunning_ops,
-       .event_descs            = icx_uncore_iio_freerunning_events,
+       .event_descs            = snr_uncore_iio_freerunning_events,
        .format_group           = &skx_uncore_iio_freerunning_format_group,
 };