From b10b887510ccb0b6bc7294888982b862703c9c32 Mon Sep 17 00:00:00 2001 From: Dhananjay Ugwekar Date: Fri, 13 Sep 2024 15:47:57 +0000 Subject: perf/x86/rapl: Add arguments to the cleanup and init functions Prep for per-core RAPL PMU addition. No functional change. Signed-off-by: Dhananjay Ugwekar --- arch/x86/events/rapl.c | 32 +++++++++++++++++++------------- 1 file changed, 19 insertions(+), 13 deletions(-) --- a/arch/x86/events/rapl.c +++ b/arch/x86/events/rapl.c @@ -597,7 +597,7 @@ static void __init rapl_advertise(void) } } -static void cleanup_rapl_pmus(void) +static void cleanup_rapl_pmus(struct rapl_pmus *rapl_pmus) { int i; @@ -615,7 +615,7 @@ static const struct attribute_group *rap NULL, }; -static void __init init_rapl_pmu(void) +static void __init init_rapl_pmu(struct rapl_pmus *rapl_pmus) { struct rapl_pmu *rapl_pmu; int cpu, rapl_pmu_idx; @@ -645,20 +645,22 @@ static void __init init_rapl_pmu(void) cpus_read_unlock(); } -static int __init init_rapl_pmus(void) +static int __init init_rapl_pmus(struct rapl_pmus **rapl_pmus_ptr, int rapl_pmu_scope) { - int nr_rapl_pmu = topology_max_packages() * topology_max_dies_per_package(); - int rapl_pmu_scope = PERF_PMU_SCOPE_DIE; + int nr_rapl_pmu; + struct rapl_pmus *rapl_pmus; - if (rapl_pmu_is_pkg_scope()) { - nr_rapl_pmu = topology_max_packages(); - rapl_pmu_scope = PERF_PMU_SCOPE_PKG; - } + if (rapl_pmu_scope == PERF_PMU_SCOPE_PKG) + nr_rapl_pmu = topology_max_packages(); + else + nr_rapl_pmu = topology_max_packages() * topology_max_dies_per_package(); rapl_pmus = kzalloc(struct_size(rapl_pmus, rapl_pmu, nr_rapl_pmu), GFP_KERNEL); if (!rapl_pmus) return -ENOMEM; + *rapl_pmus_ptr = rapl_pmus; + rapl_pmus->nr_rapl_pmu = nr_rapl_pmu; rapl_pmus->pmu.attr_groups = rapl_attr_groups; rapl_pmus->pmu.attr_update = rapl_attr_update; @@ -673,7 +675,7 @@ static int __init init_rapl_pmus(void) rapl_pmus->pmu.module = THIS_MODULE; rapl_pmus->pmu.capabilities = PERF_PMU_CAP_NO_EXCLUDE; - init_rapl_pmu(); + init_rapl_pmu(rapl_pmus); return 0; } @@ -799,8 +801,12 @@ MODULE_DEVICE_TABLE(x86cpu, rapl_model_m static int __init rapl_pmu_init(void) { const struct x86_cpu_id *id; + int rapl_pmu_scope = PERF_PMU_SCOPE_DIE; int ret; + if (rapl_pmu_is_pkg_scope()) + rapl_pmu_scope = PERF_PMU_SCOPE_PKG; + id = x86_match_cpu(rapl_model_match); if (!id) return -ENODEV; @@ -816,7 +822,7 @@ static int __init rapl_pmu_init(void) if (ret) return ret; - ret = init_rapl_pmus(); + ret = init_rapl_pmus(&rapl_pmus, rapl_pmu_scope); if (ret) return ret; @@ -829,7 +835,7 @@ static int __init rapl_pmu_init(void) out: pr_warn("Initialization failed (%d), disabled\n", ret); - cleanup_rapl_pmus(); + cleanup_rapl_pmus(rapl_pmus); return ret; } module_init(rapl_pmu_init); @@ -837,6 +843,6 @@ module_init(rapl_pmu_init); static void __exit intel_rapl_exit(void) { perf_pmu_unregister(&rapl_pmus->pmu); - cleanup_rapl_pmus(); + cleanup_rapl_pmus(rapl_pmus); } module_exit(intel_rapl_exit);