perf/arm-smmuv3: Fix lockdep assert in ->event_init()
[ Upstream commit 02a55f2743012a8089f09f6867220c3d57f16564 ]
Same as
https://lore.kernel.org/all/20240514180050.182454-1-namhyung@kernel.org/,
we should skip `for_each_sibling_event()` for group leader since it
doesn't have the ctx yet.
Fixes: f3c0eba287
("perf: Add a few assertions")
Reported-by: Greg Thelen <gthelen@google.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Robin Murphy <robin.murphy@arm.com>
Cc: Tuan Phan <tuanphan@os.amperecomputing.com>
Signed-off-by: Chun-Tse Shao <ctshao@google.com>
Acked-by: Will Deacon <will@kernel.org>
Link: https://lore.kernel.org/r/20241108050806.3730811-1-ctshao@google.com
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
b9e2605966
commit
ddce811ed3
@ -431,6 +431,17 @@ static int smmu_pmu_event_init(struct perf_event *event)
|
|||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Ensure all events are on the same cpu so all events are in the
|
||||||
|
* same cpu context, to avoid races on pmu_enable etc.
|
||||||
|
*/
|
||||||
|
event->cpu = smmu_pmu->on_cpu;
|
||||||
|
|
||||||
|
hwc->idx = -1;
|
||||||
|
|
||||||
|
if (event->group_leader == event)
|
||||||
|
return 0;
|
||||||
|
|
||||||
for_each_sibling_event(sibling, event->group_leader) {
|
for_each_sibling_event(sibling, event->group_leader) {
|
||||||
if (is_software_event(sibling))
|
if (is_software_event(sibling))
|
||||||
continue;
|
continue;
|
||||||
@ -442,14 +453,6 @@ static int smmu_pmu_event_init(struct perf_event *event)
|
|||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
hwc->idx = -1;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Ensure all events are on the same cpu so all events are in the
|
|
||||||
* same cpu context, to avoid races on pmu_enable etc.
|
|
||||||
*/
|
|
||||||
event->cpu = smmu_pmu->on_cpu;
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user