aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/kernel/pmu.c
diff options
context:
space:
mode:
authorRussell King <rmk+kernel@arm.linux.org.uk>2011-03-06 08:42:55 +0000
committerRussell King <rmk+kernel@arm.linux.org.uk>2011-03-06 08:42:55 +0000
commit71d8c5b11e3b5936ae6c2e0b1dd6f5c78b305b65 (patch)
treec815434adc34cb7274ef6a0ee16cf8491fa0c03e /arch/arm/kernel/pmu.c
parent0fff6b9a4e0aba233a2ff644316d29b0cb784e33 (diff)
parent53936c56dcaf1db818fe953ae05592a8b5e345b5 (diff)
downloadkernel_samsung_smdk4412-71d8c5b11e3b5936ae6c2e0b1dd6f5c78b305b65.zip
kernel_samsung_smdk4412-71d8c5b11e3b5936ae6c2e0b1dd6f5c78b305b65.tar.gz
kernel_samsung_smdk4412-71d8c5b11e3b5936ae6c2e0b1dd6f5c78b305b65.tar.bz2
Merge git://git.kernel.org/pub/scm/linux/kernel/git/nico/orion into devel-stable
Diffstat (limited to 'arch/arm/kernel/pmu.c')
-rw-r--r--arch/arm/kernel/pmu.c22
1 files changed, 14 insertions, 8 deletions
diff --git a/arch/arm/kernel/pmu.c b/arch/arm/kernel/pmu.c
index b8af96e..2c79eec 100644
--- a/arch/arm/kernel/pmu.c
+++ b/arch/arm/kernel/pmu.c
@@ -97,28 +97,34 @@ set_irq_affinity(int irq,
irq, cpu);
return err;
#else
- return 0;
+ return -EINVAL;
#endif
}
static int
init_cpu_pmu(void)
{
- int i, err = 0;
+ int i, irqs, err = 0;
struct platform_device *pdev = pmu_devices[ARM_PMU_DEVICE_CPU];
- if (!pdev) {
- err = -ENODEV;
- goto out;
- }
+ if (!pdev)
+ return -ENODEV;
+
+ irqs = pdev->num_resources;
+
+ /*
+ * If we have a single PMU interrupt that we can't shift, assume that
+ * we're running on a uniprocessor machine and continue.
+ */
+ if (irqs == 1 && !irq_can_set_affinity(platform_get_irq(pdev, 0)))
+ return 0;
- for (i = 0; i < pdev->num_resources; ++i) {
+ for (i = 0; i < irqs; ++i) {
err = set_irq_affinity(platform_get_irq(pdev, i), i);
if (err)
break;
}
-out:
return err;
}