Konstantin Demin
8cbaf1dea2
3rd patchs (in alphabetical order): - bbr3 - ntsync5 - openwrt - pf-kernel - xanmod - zen no configuration changes for now
113 lines
3.0 KiB
Diff
113 lines
3.0 KiB
Diff
From b10b887510ccb0b6bc7294888982b862703c9c32 Mon Sep 17 00:00:00 2001
|
|
From: Dhananjay Ugwekar <Dhananjay.Ugwekar@amd.com>
|
|
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 <Dhananjay.Ugwekar@amd.com>
|
|
---
|
|
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);
|