diff --git a/arch/x86/events/core.c b/arch/x86/events/core.c index 0b24fc9d273599387b4b1fbf99a1cc569e49dd59..606d8bb43d584a0f1b262971c4ad0ff4750da697 100644 --- a/arch/x86/events/core.c +++ b/arch/x86/events/core.c @@ -748,7 +748,7 @@ void x86_pmu_enable_all(int added) } } -static inline int is_x86_event(struct perf_event *event) +int is_x86_event(struct perf_event *event) { int i; diff --git a/arch/x86/events/perf_event.h b/arch/x86/events/perf_event.h index fb56518356ecfbacdb8d79b426bd1c82e4012082..c5573d4d795c918c67bd3da25a012f1d2efde525 100644 --- a/arch/x86/events/perf_event.h +++ b/arch/x86/events/perf_event.h @@ -110,9 +110,16 @@ static inline bool is_topdown_event(struct perf_event *event) return is_metric_event(event) || is_slots_event(event); } +int is_x86_event(struct perf_event *event); + +static inline bool check_leader_group(struct perf_event *leader, int flags) +{ + return is_x86_event(leader) ? !!(leader->hw.flags & flags) : false; +} + static inline bool is_branch_counters_group(struct perf_event *event) { - return event->group_leader->hw.flags & PERF_X86_EVENT_BRANCH_COUNTERS; + return check_leader_group(event->group_leader, PERF_X86_EVENT_BRANCH_COUNTERS); } struct amd_nb {