summaryrefslogtreecommitdiffstats
path: root/arch/arm/include
diff options
context:
space:
mode:
authorMark Rutland <mark.rutland@arm.com>2015-05-13 18:12:25 +0200
committerWill Deacon <will.deacon@arm.com>2015-05-27 17:12:36 +0200
commitcc88116da0d18b8292f5437dbc0c4683c8a34ac1 (patch)
tree532e7eeeed93572614eb41b497373e9a1c07a763 /arch/arm/include
parentarm: perf: make of_pmu_irq_cfg take arm_pmu (diff)
downloadlinux-cc88116da0d18b8292f5437dbc0c4683c8a34ac1.tar.xz
linux-cc88116da0d18b8292f5437dbc0c4683c8a34ac1.zip
arm: perf: treat PMUs as CPU affine
In multi-cluster systems, the PMUs can be different across clusters, and so our logical PMU may not be able to schedule events on all CPUs. This patch adds a cpumask to encode which CPUs a PMU driver supports controlling events for, and limits the driver to scheduling events on those CPUs, and enabling and disabling the physical PMUs on those CPUs. The cpumask is built based on the interrupt-affinity property, and in the absence of such a property a homogenous system is assumed. Acked-by: Will Deacon <will.deacon@arm.com> Signed-off-by: Mark Rutland <mark.rutland@arm.com> Signed-off-by: Will Deacon <will.deacon@arm.com>
Diffstat (limited to 'arch/arm/include')
-rw-r--r--arch/arm/include/asm/pmu.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/arch/arm/include/asm/pmu.h b/arch/arm/include/asm/pmu.h
index 675e4ab79f68..ecad26e7a68f 100644
--- a/arch/arm/include/asm/pmu.h
+++ b/arch/arm/include/asm/pmu.h
@@ -92,6 +92,7 @@ struct pmu_hw_events {
struct arm_pmu {
struct pmu pmu;
cpumask_t active_irqs;
+ cpumask_t supported_cpus;
int *irq_affinity;
char *name;
irqreturn_t (*handle_irq)(int irq_num, void *dev);