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 <[email protected]>
---
 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


Reply via email to