diff options
author | Will Deacon <will.deacon@arm.com> | 2018-10-05 13:24:36 +0100 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2018-10-18 09:16:24 +0200 |
commit | 3e6275d940a4419083de25de38d0cc9585117d25 (patch) | |
tree | 8fd26484c5bc5ea430f27489fa9c289a8c93ff71 /drivers | |
parent | b3e4b3c70a0a4028d481b8b1e84b06acdc80d1ec (diff) | |
download | linux-stable-3e6275d940a4419083de25de38d0cc9585117d25.tar.gz linux-stable-3e6275d940a4419083de25de38d0cc9585117d25.tar.bz2 linux-stable-3e6275d940a4419083de25de38d0cc9585117d25.zip |
arm64: perf: Reject stand-alone CHAIN events for PMUv3
commit ca2b497253ad01c80061a1f3ee9eb91b5d54a849 upstream.
It doesn't make sense for a perf event to be configured as a CHAIN event
in isolation, so extend the arm_pmu structure with a ->filter_match()
function to allow the backend PMU implementation to reject CHAIN events
early.
Cc: <stable@vger.kernel.org>
Reviewed-by: Suzuki K Poulose <suzuki.poulose@arm.com>
Signed-off-by: Will Deacon <will.deacon@arm.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/perf/arm_pmu.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/drivers/perf/arm_pmu.c b/drivers/perf/arm_pmu.c index d14fc2e67f93..5e06917b4cef 100644 --- a/drivers/perf/arm_pmu.c +++ b/drivers/perf/arm_pmu.c @@ -483,7 +483,13 @@ static int armpmu_filter_match(struct perf_event *event) { struct arm_pmu *armpmu = to_arm_pmu(event->pmu); unsigned int cpu = smp_processor_id(); - return cpumask_test_cpu(cpu, &armpmu->supported_cpus); + int ret; + + ret = cpumask_test_cpu(cpu, &armpmu->supported_cpus); + if (ret && armpmu->filter_match) + return armpmu->filter_match(event); + + return ret; } static ssize_t armpmu_cpumask_show(struct device *dev, |