|
@@ -966,6 +966,12 @@ static int armv8pmu_set_event_filter(struct hw_perf_event *event,
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
+static int armv8pmu_filter_match(struct perf_event *event)
|
|
|
+{
|
|
|
+ unsigned long evtype = event->hw.config_base & ARMV8_PMU_EVTYPE_EVENT;
|
|
|
+ return evtype != ARMV8_PMUV3_PERFCTR_CHAIN;
|
|
|
+}
|
|
|
+
|
|
|
static void armv8pmu_reset(void *info)
|
|
|
{
|
|
|
struct arm_pmu *cpu_pmu = (struct arm_pmu *)info;
|
|
@@ -1114,6 +1120,7 @@ static int armv8_pmu_init(struct arm_pmu *cpu_pmu)
|
|
|
cpu_pmu->stop = armv8pmu_stop,
|
|
|
cpu_pmu->reset = armv8pmu_reset,
|
|
|
cpu_pmu->set_event_filter = armv8pmu_set_event_filter;
|
|
|
+ cpu_pmu->filter_match = armv8pmu_filter_match;
|
|
|
|
|
|
return 0;
|
|
|
}
|