[PATCH 03/19] perf/imx8_ddr: Fix group validation
Robin Murphy
robin.murphy at arm.com
Wed Aug 13 17:00:55 UTC 2025
The group validation here is erroneously inspecting software events,
as well as other hardware siblings, which are only checked for *after*
they've already been misinterpreted. Once again, just ignore events
which don't belong to our PMU, and don't duplicate what
perf_event_open() will already check for us.
Signed-off-by: Robin Murphy <robin.murphy at arm.com>
---
drivers/perf/fsl_imx8_ddr_perf.c | 21 +++++----------------
1 file changed, 5 insertions(+), 16 deletions(-)
diff --git a/drivers/perf/fsl_imx8_ddr_perf.c b/drivers/perf/fsl_imx8_ddr_perf.c
index b989ffa95d69..56fe281974d2 100644
--- a/drivers/perf/fsl_imx8_ddr_perf.c
+++ b/drivers/perf/fsl_imx8_ddr_perf.c
@@ -331,6 +331,9 @@ static u32 ddr_perf_filter_val(struct perf_event *event)
static bool ddr_perf_filters_compatible(struct perf_event *a,
struct perf_event *b)
{
+ /* Ignore grouped events that aren't ours */
+ if (a->pmu != b->pmu)
+ return true;
if (!ddr_perf_is_filtered(a))
return true;
if (!ddr_perf_is_filtered(b))
@@ -409,16 +412,8 @@ static int ddr_perf_event_init(struct perf_event *event)
return -EOPNOTSUPP;
}
- /*
- * We must NOT create groups containing mixed PMUs, although software
- * events are acceptable (for example to create a CCN group
- * periodically read when a hrtimer aka cpu-clock leader triggers).
- */
- if (event->group_leader->pmu != event->pmu &&
- !is_software_event(event->group_leader))
- return -EINVAL;
-
- if (pmu->devtype_data->quirks & DDR_CAP_AXI_ID_FILTER) {
+ if (event != event->group_leader &&
+ pmu->devtype_data->quirks & DDR_CAP_AXI_ID_FILTER) {
if (!ddr_perf_filters_compatible(event, event->group_leader))
return -EINVAL;
for_each_sibling_event(sibling, event->group_leader) {
@@ -427,12 +422,6 @@ static int ddr_perf_event_init(struct perf_event *event)
}
}
- for_each_sibling_event(sibling, event->group_leader) {
- if (sibling->pmu != event->pmu &&
- !is_software_event(sibling))
- return -EINVAL;
- }
-
event->cpu = pmu->cpu;
hwc->idx = -1;
--
2.39.2.101.g768bb238c484.dirty
More information about the Intel-xe
mailing list