From: Kan Liang <kan.li...@linux.intel.com>

Implement filter_match callback for X86, which check whether an event is
schedulable on the current CPU.

Reviewed-by: Andi Kleen <a...@linux.intel.com>
Signed-off-by: Kan Liang <kan.li...@linux.intel.com>
---
 arch/x86/events/core.c       | 10 ++++++++++
 arch/x86/events/perf_event.h |  1 +
 2 files changed, 11 insertions(+)

diff --git a/arch/x86/events/core.c b/arch/x86/events/core.c
index 4d9dd83c..b68d38a 100644
--- a/arch/x86/events/core.c
+++ b/arch/x86/events/core.c
@@ -2613,6 +2613,14 @@ static int x86_pmu_aux_output_match(struct perf_event 
*event)
        return 0;
 }
 
+static int x86_pmu_filter_match(struct perf_event *event)
+{
+       if (x86_pmu.filter_match)
+               return x86_pmu.filter_match(event);
+
+       return 1;
+}
+
 static struct pmu pmu = {
        .pmu_enable             = x86_pmu_enable,
        .pmu_disable            = x86_pmu_disable,
@@ -2640,6 +2648,8 @@ static struct pmu pmu = {
        .check_period           = x86_pmu_check_period,
 
        .aux_output_match       = x86_pmu_aux_output_match,
+
+       .filter_match           = x86_pmu_filter_match,
 };
 
 void arch_perf_update_userpage(struct perf_event *event,
diff --git a/arch/x86/events/perf_event.h b/arch/x86/events/perf_event.h
index 84d629d..5759f96 100644
--- a/arch/x86/events/perf_event.h
+++ b/arch/x86/events/perf_event.h
@@ -900,6 +900,7 @@ struct x86_pmu {
         */
        unsigned long                   hybrid_pmu_bitmap;
        struct x86_hybrid_pmu           hybrid_pmu[X86_HYBRID_PMU_MAX_INDEX];
+       int                             (*filter_match)(struct perf_event 
*event);
 };
 
 struct x86_perf_task_context_opt {
-- 
2.7.4

Reply via email to