|
@@ -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;
|