mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-15 20:12:00 -04:00
perf/x86/intel/uncore: Enable UPI topology discovery for Sapphire Rapids
UPI topology discovery on SPR is same as in ICX but UBOX device has different Device ID 0x3250. This patch enables /sys/devices/uncore_upi_*/die* attributes on SPR. Signed-off-by: Alexander Antonov <alexander.antonov@linux.intel.com> Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org> Reviewed-by: Kan Liang <kan.liang@linux.intel.com> Link: https://lore.kernel.org/r/20221117122833.3103580-10-alexander.antonov@linux.intel.com
This commit is contained in:
committed by
Peter Zijlstra
parent
f680b6e606
commit
9a3b675cd3
@@ -458,6 +458,7 @@
|
||||
|
||||
/* SPR */
|
||||
#define SPR_RAW_EVENT_MASK_EXT 0xffffff
|
||||
#define SPR_UBOX_DID 0x3250
|
||||
|
||||
/* SPR CHA */
|
||||
#define SPR_CHA_PMON_CTL_TID_EN (1 << 16)
|
||||
@@ -6112,9 +6113,43 @@ static struct intel_uncore_type spr_uncore_m2m = {
|
||||
.name = "m2m",
|
||||
};
|
||||
|
||||
static struct attribute_group spr_upi_mapping_group = {
|
||||
.is_visible = skx_upi_mapping_visible,
|
||||
};
|
||||
|
||||
static const struct attribute_group *spr_upi_attr_update[] = {
|
||||
&uncore_alias_group,
|
||||
&spr_upi_mapping_group,
|
||||
NULL
|
||||
};
|
||||
|
||||
#define SPR_UPI_REGS_ADDR_DEVICE_LINK0 0x01
|
||||
|
||||
static int spr_upi_set_mapping(struct intel_uncore_type *type)
|
||||
{
|
||||
return pmu_upi_set_mapping(type, &spr_upi_mapping_group);
|
||||
}
|
||||
|
||||
static void spr_upi_cleanup_mapping(struct intel_uncore_type *type)
|
||||
{
|
||||
pmu_cleanup_mapping(type, &spr_upi_mapping_group);
|
||||
}
|
||||
|
||||
static int spr_upi_get_topology(struct intel_uncore_type *type)
|
||||
{
|
||||
return discover_upi_topology(type, SPR_UBOX_DID, SPR_UPI_REGS_ADDR_DEVICE_LINK0);
|
||||
}
|
||||
|
||||
static struct intel_uncore_type spr_uncore_upi = {
|
||||
SPR_UNCORE_PCI_COMMON_FORMAT(),
|
||||
.event_mask = SNBEP_PMON_RAW_EVENT_MASK,
|
||||
.event_mask_ext = SPR_RAW_EVENT_MASK_EXT,
|
||||
.format_group = &spr_uncore_raw_format_group,
|
||||
.ops = &spr_uncore_pci_ops,
|
||||
.name = "upi",
|
||||
.attr_update = spr_upi_attr_update,
|
||||
.get_topology = spr_upi_get_topology,
|
||||
.set_mapping = spr_upi_set_mapping,
|
||||
.cleanup_mapping = spr_upi_cleanup_mapping,
|
||||
};
|
||||
|
||||
static struct intel_uncore_type spr_uncore_m3upi = {
|
||||
@@ -6318,6 +6353,12 @@ static void uncore_type_customized_copy(struct intel_uncore_type *to_type,
|
||||
to_type->format_group = from_type->format_group;
|
||||
if (from_type->attr_update)
|
||||
to_type->attr_update = from_type->attr_update;
|
||||
if (from_type->set_mapping)
|
||||
to_type->set_mapping = from_type->set_mapping;
|
||||
if (from_type->get_topology)
|
||||
to_type->get_topology = from_type->get_topology;
|
||||
if (from_type->cleanup_mapping)
|
||||
to_type->cleanup_mapping = from_type->cleanup_mapping;
|
||||
}
|
||||
|
||||
static struct intel_uncore_type **
|
||||
|
||||
Reference in New Issue
Block a user