Skip to content

Commit

Permalink
perf/x86/intel/uncore: Wrap the max dies calculation into an accessor
Browse files Browse the repository at this point in the history
The accessor to return number of dies on the platform.

Signed-off-by: Alexander Antonov <alexander.antonov@linux.intel.com>
Signed-off-by: Roman Sudarikov <roman.sudarikov@linux.intel.com>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Reviewed-by: Kan Liang <kan.liang@linux.intel.com>
Reviewed-by: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Link: https://lkml.kernel.org/r/20200601083543.30011-3-alexander.antonov@linux.intel.com
  • Loading branch information
Roman Sudarikov authored and Peter Zijlstra committed Jun 15, 2020
1 parent 19a3981 commit 36b533b
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 6 deletions.
13 changes: 7 additions & 6 deletions arch/x86/events/intel/uncore.c
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ struct pci_driver *uncore_pci_driver;
DEFINE_RAW_SPINLOCK(pci2phy_map_lock);
struct list_head pci2phy_map_head = LIST_HEAD_INIT(pci2phy_map_head);
struct pci_extra_dev *uncore_extra_pci_dev;
static int max_dies;
int __uncore_max_dies;

/* mask of cpus that collect uncore events */
static cpumask_t uncore_cpu_mask;
Expand Down Expand Up @@ -108,7 +108,7 @@ struct intel_uncore_box *uncore_pmu_to_box(struct intel_uncore_pmu *pmu, int cpu
* The unsigned check also catches the '-1' return value for non
* existent mappings in the topology map.
*/
return dieid < max_dies ? pmu->boxes[dieid] : NULL;
return dieid < uncore_max_dies() ? pmu->boxes[dieid] : NULL;
}

u64 uncore_msr_read_counter(struct intel_uncore_box *box, struct perf_event *event)
Expand Down Expand Up @@ -882,7 +882,7 @@ static void uncore_free_boxes(struct intel_uncore_pmu *pmu)
{
int die;

for (die = 0; die < max_dies; die++)
for (die = 0; die < uncore_max_dies(); die++)
kfree(pmu->boxes[die]);
kfree(pmu->boxes);
}
Expand Down Expand Up @@ -923,7 +923,7 @@ static int __init uncore_type_init(struct intel_uncore_type *type, bool setid)
if (!pmus)
return -ENOMEM;

size = max_dies * sizeof(struct intel_uncore_box *);
size = uncore_max_dies() * sizeof(struct intel_uncore_box *);

for (i = 0; i < type->num_boxes; i++) {
pmus[i].func_id = setid ? i : -1;
Expand Down Expand Up @@ -1123,7 +1123,7 @@ static int __init uncore_pci_init(void)
size_t size;
int ret;

size = max_dies * sizeof(struct pci_extra_dev);
size = uncore_max_dies() * sizeof(struct pci_extra_dev);
uncore_extra_pci_dev = kzalloc(size, GFP_KERNEL);
if (!uncore_extra_pci_dev) {
ret = -ENOMEM;
Expand Down Expand Up @@ -1552,7 +1552,8 @@ static int __init intel_uncore_init(void)
if (boot_cpu_has(X86_FEATURE_HYPERVISOR))
return -ENODEV;

max_dies = topology_max_packages() * topology_max_die_per_package();
__uncore_max_dies =
topology_max_packages() * topology_max_die_per_package();

uncore_init = (struct intel_uncore_init_fun *)id->driver_data;
if (uncore_init->pci_init) {
Expand Down
3 changes: 3 additions & 0 deletions arch/x86/events/intel/uncore.h
Original file line number Diff line number Diff line change
Expand Up @@ -182,6 +182,9 @@ int uncore_pcibus_to_physid(struct pci_bus *bus);
ssize_t uncore_event_show(struct kobject *kobj,
struct kobj_attribute *attr, char *buf);

extern int __uncore_max_dies;
#define uncore_max_dies() (__uncore_max_dies)

#define INTEL_UNCORE_EVENT_DESC(_name, _config) \
{ \
.attr = __ATTR(_name, 0444, uncore_event_show, NULL), \
Expand Down

0 comments on commit 36b533b

Please sign in to comment.