perf/x86/intel/uncore: Support extra IMC channel on Ice Lake server
authorKan Liang <kan.liang@linux.intel.com>
Thu, 26 Aug 2021 15:32:37 +0000 (08:32 -0700)
committerPeter Zijlstra <peterz@infradead.org>
Tue, 31 Aug 2021 11:59:35 +0000 (13:59 +0200)
There are three channels on a Ice Lake server, but only two channels
will ever be active. Current perf only enables two channels.

Support the extra IMC channel, which may be activated on some Ice Lake
machines. For a non-activated channel, the SW can still access it. The
write will be ignored by the HW. 0 is always returned for the reading.

Fixes: 2b3b76b5ec67 ("perf/x86/intel/uncore: Add Ice Lake server uncore support")
Signed-off-by: Kan Liang <kan.liang@linux.intel.com>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Reviewed-by: Andi Kleen <ak@linux.intel.com>
Cc: stable@vger.kernel.org
Link: https://lkml.kernel.org/r/1629991963-102621-2-git-send-email-kan.liang@linux.intel.com
arch/x86/events/intel/uncore_snbep.c

index 5ddc0f3..ea29e89 100644 (file)
 #define ICX_M3UPI_PCI_PMON_BOX_CTL             0xa0
 
 /* ICX IMC */
-#define ICX_NUMBER_IMC_CHN                     2
+#define ICX_NUMBER_IMC_CHN                     3
 #define ICX_IMC_MEM_STRIDE                     0x4
 
 /* SPR */
@@ -5463,7 +5463,7 @@ static struct intel_uncore_ops icx_uncore_mmio_ops = {
 static struct intel_uncore_type icx_uncore_imc = {
        .name           = "imc",
        .num_counters   = 4,
-       .num_boxes      = 8,
+       .num_boxes      = 12,
        .perf_ctr_bits  = 48,
        .fixed_ctr_bits = 48,
        .fixed_ctr      = SNR_IMC_MMIO_PMON_FIXED_CTR,