[PATCH 6/8] powerpc/perf: mpc7450: Export the event format in sysfs

From: Matt Turner

Date: Mon Nov 09 2026 - 20:54:24 EST


The MPC7450 PMU has no format/ directory, so perf can take its events
only as raw codes, and cannot set the threshold by name.

Describe the fields of the event code: the PMC select (bits 0-6), the
PMC (bits 8-10), the threshold (bits 12-17) and the threshold multiplier
(bit 18). A threshold event can then be written as, e.g.,
cpu/event=0x12b,thresh=20/.

Signed-off-by: Matt Turner <mattst88@xxxxxxxxx>
---
arch/powerpc/perf/mpc7450-pmu.c | 26 ++++++++++++++++++++++++++
1 file changed, 26 insertions(+)

diff --git a/arch/powerpc/perf/mpc7450-pmu.c b/arch/powerpc/perf/mpc7450-pmu.c
index b2fe977cea16..9bed5c238f45 100644
--- a/arch/powerpc/perf/mpc7450-pmu.c
+++ b/arch/powerpc/perf/mpc7450-pmu.c
@@ -398,6 +398,31 @@ static u64 mpc7450_cache_events[C(MAX)][C(OP_MAX)][C(RESULT_MAX)] = {
},
};

+PMU_FORMAT_ATTR(event, "config:0-18");
+PMU_FORMAT_ATTR(pmcsel, "config:0-6");
+PMU_FORMAT_ATTR(pmc, "config:8-10");
+PMU_FORMAT_ATTR(thresh, "config:12-17");
+PMU_FORMAT_ATTR(thresh_mult, "config:18");
+
+static struct attribute *mpc7450_pmu_format_attr[] = {
+ &format_attr_event.attr,
+ &format_attr_pmcsel.attr,
+ &format_attr_pmc.attr,
+ &format_attr_thresh.attr,
+ &format_attr_thresh_mult.attr,
+ NULL,
+};
+
+static const struct attribute_group mpc7450_pmu_format_group = {
+ .name = "format",
+ .attrs = mpc7450_pmu_format_attr,
+};
+
+static const struct attribute_group *mpc7450_pmu_attr_groups[] = {
+ &mpc7450_pmu_format_group,
+ NULL,
+};
+
struct power_pmu mpc7450_pmu = {
.name = "MPC7450 family",
.n_counter = N_COUNTER,
@@ -411,6 +436,7 @@ struct power_pmu mpc7450_pmu = {
.n_generic = ARRAY_SIZE(mpc7450_generic_events),
.generic_events = mpc7450_generic_events,
.cache_events = &mpc7450_cache_events,
+ .attr_groups = mpc7450_pmu_attr_groups,
};

static int __init init_mpc7450_pmu(void)

--
2.55.0