aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/kernel/perf_event_cpu.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arm/kernel/perf_event_cpu.c')
-rw-r--r--arch/arm/kernel/perf_event_cpu.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/arch/arm/kernel/perf_event_cpu.c b/arch/arm/kernel/perf_event_cpu.c
index 91c7ba182dcd..213919ba326f 100644
--- a/arch/arm/kernel/perf_event_cpu.c
+++ b/arch/arm/kernel/perf_event_cpu.c
@@ -303,12 +303,17 @@ static int probe_current_pmu(struct arm_pmu *pmu)
303 303
304static int of_pmu_irq_cfg(struct platform_device *pdev) 304static int of_pmu_irq_cfg(struct platform_device *pdev)
305{ 305{
306 int i; 306 int i, irq;
307 int *irqs = kcalloc(pdev->num_resources, sizeof(*irqs), GFP_KERNEL); 307 int *irqs = kcalloc(pdev->num_resources, sizeof(*irqs), GFP_KERNEL);
308 308
309 if (!irqs) 309 if (!irqs)
310 return -ENOMEM; 310 return -ENOMEM;
311 311
312 /* Don't bother with PPIs; they're already affine */
313 irq = platform_get_irq(pdev, 0);
314 if (irq >= 0 && irq_is_percpu(irq))
315 return 0;
316
312 for (i = 0; i < pdev->num_resources; ++i) { 317 for (i = 0; i < pdev->num_resources; ++i) {
313 struct device_node *dn; 318 struct device_node *dn;
314 int cpu; 319 int cpu;
@@ -317,7 +322,7 @@ static int of_pmu_irq_cfg(struct platform_device *pdev)
317 i); 322 i);
318 if (!dn) { 323 if (!dn) {
319 pr_warn("Failed to parse %s/interrupt-affinity[%d]\n", 324 pr_warn("Failed to parse %s/interrupt-affinity[%d]\n",
320 of_node_full_name(dn), i); 325 of_node_full_name(pdev->dev.of_node), i);
321 break; 326 break;
322 } 327 }
323 328