70 lines
2.2 KiB
Diff
70 lines
2.2 KiB
Diff
From 8fd2da09b0c534e05a7b12eb578afae27ad20f7d Mon Sep 17 00:00:00 2001
|
|
From: Dhananjay Ugwekar <Dhananjay.Ugwekar@amd.com>
|
|
Date: Fri, 15 Nov 2024 06:07:59 +0000
|
|
Subject: perf/x86/rapl: Remove the cpu_to_rapl_pmu() function
|
|
|
|
Prepare for the addition of RAPL core energy counter support.
|
|
Post which, one CPU might be mapped to more than one rapl_pmu
|
|
(package/die one and a core one). So, remove the cpu_to_rapl_pmu()
|
|
function.
|
|
|
|
Signed-off-by: Dhananjay Ugwekar <Dhananjay.Ugwekar@amd.com>
|
|
Reviewed-by: Zhang Rui <rui.zhang@intel.com>
|
|
Tested-by: Zhang Rui <rui.zhang@intel.com>
|
|
---
|
|
arch/x86/events/rapl.c | 24 +++++++++++-------------
|
|
1 file changed, 11 insertions(+), 13 deletions(-)
|
|
|
|
--- a/arch/x86/events/rapl.c
|
|
+++ b/arch/x86/events/rapl.c
|
|
@@ -157,22 +157,15 @@ static struct perf_msr *rapl_msrs;
|
|
* RAPL PMU scope.
|
|
*/
|
|
static inline unsigned int get_rapl_pmu_idx(int cpu)
|
|
-{
|
|
+{ /*
|
|
+ * Returns unsigned int, which converts the '-1' return value
|
|
+ * (for non-existent mappings in topology map) to UINT_MAX, so
|
|
+ * the error check in the caller is simplified.
|
|
+ */
|
|
return rapl_pmu_is_pkg_scope() ? topology_logical_package_id(cpu) :
|
|
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;
|
|
@@ -350,6 +343,7 @@ static int rapl_pmu_event_init(struct pe
|
|
u64 cfg = event->attr.config & RAPL_EVENT_MASK;
|
|
int bit, ret = 0;
|
|
struct rapl_pmu *pmu;
|
|
+ unsigned int rapl_pmu_idx;
|
|
|
|
/* only look at RAPL events */
|
|
if (event->attr.type != rapl_pmus->pmu.type)
|
|
@@ -376,8 +370,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;
|