diff options
Diffstat (limited to 'arch/arm/kernel/perf_event_cpu.c')
| -rw-r--r-- | arch/arm/kernel/perf_event_cpu.c | 12 | 
1 files changed, 9 insertions, 3 deletions
| diff --git a/arch/arm/kernel/perf_event_cpu.c b/arch/arm/kernel/perf_event_cpu.c index 91c7ba182dcd..3b8c2833c537 100644 --- a/arch/arm/kernel/perf_event_cpu.c +++ b/arch/arm/kernel/perf_event_cpu.c @@ -303,9 +303,15 @@ static int probe_current_pmu(struct arm_pmu *pmu)  static int of_pmu_irq_cfg(struct platform_device *pdev)  { -	int i; -	int *irqs = kcalloc(pdev->num_resources, sizeof(*irqs), GFP_KERNEL); +	int i, irq; +	int *irqs; +	/* Don't bother with PPIs; they're already affine */ +	irq = platform_get_irq(pdev, 0); +	if (irq >= 0 && irq_is_percpu(irq)) +		return 0; + +	irqs = kcalloc(pdev->num_resources, sizeof(*irqs), GFP_KERNEL);  	if (!irqs)  		return -ENOMEM; @@ -317,7 +323,7 @@ static int of_pmu_irq_cfg(struct platform_device *pdev)  				      i);  		if (!dn) {  			pr_warn("Failed to parse %s/interrupt-affinity[%d]\n", -				of_node_full_name(dn), i); +				of_node_full_name(pdev->dev.of_node), i);  			break;  		} |