Konstantin Demin
8cbaf1dea2
3rd patchs (in alphabetical order): - bbr3 - ntsync5 - openwrt - pf-kernel - xanmod - zen no configuration changes for now
88 lines
2.7 KiB
Diff
88 lines
2.7 KiB
Diff
From b8e1231d5f78314de8f9066baba7b1fdd5e59218 Mon Sep 17 00:00:00 2001
|
|
From: Dhananjay Ugwekar <Dhananjay.Ugwekar@amd.com>
|
|
Date: Fri, 13 Sep 2024 15:21:42 +0000
|
|
Subject: perf/x86/rapl: Remove the cpu_to_rapl_pmu() function
|
|
|
|
Preparation for the addition of per-core RAPL energy counter support for
|
|
AMD CPUs. Post which, one cpu might be mapped to more than one rapl_pmu
|
|
(package/die one or per-core one), also makes sense to use the
|
|
get_rapl_pmu_idx macro which is anyway used to index into the
|
|
rapl_pmus->pmus[] array.
|
|
|
|
Signed-off-by: Dhananjay Ugwekar <Dhananjay.Ugwekar@amd.com>
|
|
---
|
|
arch/x86/events/rapl.c | 29 +++++++++++++----------------
|
|
1 file changed, 13 insertions(+), 16 deletions(-)
|
|
|
|
--- a/arch/x86/events/rapl.c
|
|
+++ b/arch/x86/events/rapl.c
|
|
@@ -162,17 +162,6 @@ static inline unsigned int get_rapl_pmu_
|
|
topology_logical_die_id(cpu);
|
|
}
|
|
|
|
-static inline struct rapl_pmu *cpu_to_rapl_pmu(unsigned int cpu)
|
|
-{
|
|
- unsigned int rapl_pmu_idx = get_rapl_pmu_idx(cpu);
|
|
-
|
|
- /*
|
|
- * The unsigned check also catches the '-1' return value for non
|
|
- * existent mappings in the topology map.
|
|
- */
|
|
- return rapl_pmu_idx < rapl_pmus->nr_rapl_pmu ? rapl_pmus->pmus[rapl_pmu_idx] : NULL;
|
|
-}
|
|
-
|
|
static inline u64 rapl_read_counter(struct perf_event *event)
|
|
{
|
|
u64 raw;
|
|
@@ -348,7 +337,7 @@ static void rapl_pmu_event_del(struct pe
|
|
static int rapl_pmu_event_init(struct perf_event *event)
|
|
{
|
|
u64 cfg = event->attr.config & RAPL_EVENT_MASK;
|
|
- int bit, ret = 0;
|
|
+ int bit, rapl_pmu_idx, ret = 0;
|
|
struct rapl_pmu *pmu;
|
|
|
|
/* only look at RAPL events */
|
|
@@ -376,8 +365,12 @@ static int rapl_pmu_event_init(struct pe
|
|
if (event->attr.sample_period) /* no sampling */
|
|
return -EINVAL;
|
|
|
|
+ rapl_pmu_idx = get_rapl_pmu_idx(event->cpu);
|
|
+ if (rapl_pmu_idx >= rapl_pmus->nr_rapl_pmu)
|
|
+ return -EINVAL;
|
|
+
|
|
/* must be done before validate_group */
|
|
- pmu = cpu_to_rapl_pmu(event->cpu);
|
|
+ pmu = rapl_pmus->pmus[rapl_pmu_idx];
|
|
if (!pmu)
|
|
return -EINVAL;
|
|
event->pmu_private = pmu;
|
|
@@ -623,12 +616,16 @@ static const struct attribute_group *rap
|
|
static void __init init_rapl_pmu(void)
|
|
{
|
|
struct rapl_pmu *pmu;
|
|
- int cpu;
|
|
+ int cpu, rapl_pmu_idx;
|
|
|
|
cpus_read_lock();
|
|
|
|
for_each_cpu(cpu, cpu_online_mask) {
|
|
- pmu = cpu_to_rapl_pmu(cpu);
|
|
+ rapl_pmu_idx = get_rapl_pmu_idx(cpu);
|
|
+ if (rapl_pmu_idx >= rapl_pmus->nr_rapl_pmu)
|
|
+ continue;
|
|
+
|
|
+ pmu = rapl_pmus->pmus[rapl_pmu_idx];
|
|
if (pmu)
|
|
continue;
|
|
pmu = kzalloc_node(sizeof(*pmu), GFP_KERNEL, cpu_to_node(cpu));
|
|
@@ -640,7 +637,7 @@ static void __init init_rapl_pmu(void)
|
|
pmu->timer_interval = ms_to_ktime(rapl_timer_ms);
|
|
rapl_hrtimer_init(pmu);
|
|
|
|
- rapl_pmus->pmus[get_rapl_pmu_idx(cpu)] = pmu;
|
|
+ rapl_pmus->pmus[rapl_pmu_idx] = pmu;
|
|
}
|
|
|
|
cpus_read_unlock();
|