浏览代码

ARM: perf: clean up event group validation

Currently, event group validation compares each event's 'pmu' pointer
against the static 'pmu' pointer. This limits the code to supporting
only 1 PMU.

This patch changes the behaviour to consider an event's group leader's
'pmu' pointer as canonical for validation. This should ease later
generalisation of the code to support multiple PMUs at once.

Signed-off-by: Mark Rutland <mark.rutland@arm.com>
Reviewed-by: Will Deacon <will.deacon@arm.com>
Reviewed-by: Jamie Iles <jamie@jamieiles.com>
Reviewed-by: Ashwin Chaugule <ashwinc@codeaurora.org>
Signed-off-by: Will Deacon <will.deacon@arm.com>
Mark Rutland 14 年之前
父节点
当前提交
7b9f72c62e
共有 1 个文件被更改,包括 2 次插入1 次删除
  1. 2 1
      arch/arm/kernel/perf_event.c

+ 2 - 1
arch/arm/kernel/perf_event.c

@@ -348,8 +348,9 @@ validate_event(struct cpu_hw_events *cpuc,
 	       struct perf_event *event)
 	       struct perf_event *event)
 {
 {
 	struct hw_perf_event fake_event = event->hw;
 	struct hw_perf_event fake_event = event->hw;
+	struct pmu *leader_pmu = event->group_leader->pmu;
 
 
-	if (event->pmu != &pmu || event->state <= PERF_EVENT_STATE_OFF)
+	if (event->pmu != leader_pmu || event->state <= PERF_EVENT_STATE_OFF)
 		return 1;
 		return 1;
 
 
 	return armpmu->get_event_idx(cpuc, &fake_event) >= 0;
 	return armpmu->get_event_idx(cpuc, &fake_event) >= 0;