forked from luck/tmp_suning_uos_patched
ARM: 7698/1: perf: fix group validation when using enable_on_exec
Events may be created with attr->disabled == 1 and attr->enable_on_exec == 1, which confuses the group validation code because events with the PERF_EVENT_STATE_OFF are not considered candidates for scheduling, which may lead to failure at group scheduling time. This patch fixes the validation check for ARM, so that events in the OFF state are still considered when enable_on_exec is true. Cc: stable@vger.kernel.org Cc: Peter Zijlstra <a.p.zijlstra@chello.nl> Cc: Arnaldo Carvalho de Melo <acme@ghostprotocols.net> Cc: Jiri Olsa <jolsa@redhat.com> Reported-by: Sudeep KarkadaNagesha <Sudeep.KarkadaNagesha@arm.com> Signed-off-by: Will Deacon <will.deacon@arm.com> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
This commit is contained in:
parent
50acff3c1f
commit
cb2d8b342a
@ -253,7 +253,10 @@ validate_event(struct pmu_hw_events *hw_events,
|
|||||||
struct arm_pmu *armpmu = to_arm_pmu(event->pmu);
|
struct arm_pmu *armpmu = to_arm_pmu(event->pmu);
|
||||||
struct pmu *leader_pmu = event->group_leader->pmu;
|
struct pmu *leader_pmu = event->group_leader->pmu;
|
||||||
|
|
||||||
if (event->pmu != leader_pmu || event->state <= PERF_EVENT_STATE_OFF)
|
if (event->pmu != leader_pmu || event->state < PERF_EVENT_STATE_OFF)
|
||||||
|
return 1;
|
||||||
|
|
||||||
|
if (event->state == PERF_EVENT_STATE_OFF && !event->attr.enable_on_exec)
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
return armpmu->get_event_idx(hw_events, event) >= 0;
|
return armpmu->get_event_idx(hw_events, event) >= 0;
|
||||||
|
Loading…
Reference in New Issue
Block a user