diff options
| author | Thomas Gleixner <tglx@linutronix.de> | 2011-02-23 09:21:41 +0100 |
|---|---|---|
| committer | Thomas Gleixner <tglx@linutronix.de> | 2011-02-23 09:21:41 +0100 |
| commit | 7acdbb3f35f4d08c0c4f7cfa306bc7006b6ba902 (patch) | |
| tree | c76aeb5996fa8f39b838e9cc41f40f854db01912 /arch/arm/kernel/pmu.c | |
| parent | 695884fb8acd9857e0e7120ccb2150e30f4b8fef (diff) | |
| parent | f5412be599602124d2bdd49947b231dd77c0bf99 (diff) | |
| download | linux-7acdbb3f35f4d08c0c4f7cfa306bc7006b6ba902.tar.gz linux-7acdbb3f35f4d08c0c4f7cfa306bc7006b6ba902.tar.bz2 linux-7acdbb3f35f4d08c0c4f7cfa306bc7006b6ba902.zip | |
Merge branch 'linus' into x86/platform
Reason: Import mainline device tree changes on which further patches
depend on or conflict.
Trivial conflict in: drivers/spi/pxa2xx_spi_pci.c
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Diffstat (limited to 'arch/arm/kernel/pmu.c')
| -rw-r--r-- | arch/arm/kernel/pmu.c | 22 |
1 files changed, 14 insertions, 8 deletions
diff --git a/arch/arm/kernel/pmu.c b/arch/arm/kernel/pmu.c index b8af96ea62e6..2c79eec19262 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; } |
