[tip: perf/core] perf/x86/intel/uncore: Introduce UPI topology type

From: tip-bot2 for Alexander Antonov
Date: Thu Nov 24 2022 - 07:03:46 EST


The following commit has been merged into the perf/core branch of tip:

Commit-ID: cee4eebd9158d9eb3f8c1708c297b219e8ea861f
Gitweb: https://git.kernel.org/tip/cee4eebd9158d9eb3f8c1708c297b219e8ea861f
Author: Alexander Antonov <alexander.antonov@xxxxxxxxxxxxxxx>
AuthorDate: Thu, 17 Nov 2022 12:28:24
Committer: Peter Zijlstra <peterz@xxxxxxxxxxxxx>
CommitterDate: Thu, 24 Nov 2022 11:09:20 +01:00

perf/x86/intel/uncore: Introduce UPI topology type

This patch introduces new 'uncore_upi_topology' topology type to support
UPI topology discovery.

Signed-off-by: Alexander Antonov <alexander.antonov@xxxxxxxxxxxxxxx>
Signed-off-by: Peter Zijlstra (Intel) <peterz@xxxxxxxxxxxxx>
Reviewed-by: Kan Liang <kan.liang@xxxxxxxxxxxxxxx>
Link: https://lore.kernel.org/r/20221117122833.3103580-3-alexander.antonov@xxxxxxxxxxxxxxx
---
arch/x86/events/intel/uncore.h | 7 +++++++
arch/x86/events/intel/uncore_snbep.c | 4 +++-
2 files changed, 10 insertions(+), 1 deletion(-)

diff --git a/arch/x86/events/intel/uncore.h b/arch/x86/events/intel/uncore.h
index 917cff1..ef14149 100644
--- a/arch/x86/events/intel/uncore.h
+++ b/arch/x86/events/intel/uncore.h
@@ -183,11 +183,18 @@ struct uncore_iio_topology {
int segment;
};

+struct uncore_upi_topology {
+ int die_to;
+ int pmu_idx_to;
+ int enabled;
+};
+
struct intel_uncore_topology {
int pmu_idx;
union {
void *untyped;
struct uncore_iio_topology *iio;
+ struct uncore_upi_topology *upi;
};
};

diff --git a/arch/x86/events/intel/uncore_snbep.c b/arch/x86/events/intel/uncore_snbep.c
index 469ff88..d3323f1 100644
--- a/arch/x86/events/intel/uncore_snbep.c
+++ b/arch/x86/events/intel/uncore_snbep.c
@@ -3774,11 +3774,13 @@ static int die_to_cpu(int die)

enum {
IIO_TOPOLOGY_TYPE,
+ UPI_TOPOLOGY_TYPE,
TOPOLOGY_MAX
};

static const size_t topology_size[TOPOLOGY_MAX] = {
- sizeof(*((struct intel_uncore_topology *)NULL)->iio)
+ sizeof(*((struct intel_uncore_topology *)NULL)->iio),
+ sizeof(*((struct intel_uncore_topology *)NULL)->upi)
};

static int pmu_alloc_topology(struct intel_uncore_type *type, int topology_type)