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
