aboutsummaryrefslogtreecommitdiffstats
path: root/arch/powerpc
diff options
context:
space:
mode:
authorchenhui zhao <chenhui.zhao@freescale.com>2013-05-27 17:59:43 -0400
committerBenjamin Herrenschmidt <benh@kernel.crashing.org>2013-05-31 18:29:24 -0400
commite242114afff0a41550e174cd787cdbafd34625de (patch)
tree5dc04865bd28f94e54a79a47a37a6186bd734fe1 /arch/powerpc
parent2b3f8e87cf99a33fb6faf5026d7147748bbd77b6 (diff)
powerpc/mpic: Fix irq distribution problem when MPIC_SINGLE_DEST_CPU
For the mpic with a flag MPIC_SINGLE_DEST_CPU, only one bit should be set in interrupt destination registers. The code is applicable to 64-bit platforms as well as 32-bit. Signed-off-by: Zhao Chenhui <chenhui.zhao@freescale.com> Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Diffstat (limited to 'arch/powerpc')
-rw-r--r--arch/powerpc/sysdev/mpic.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/arch/powerpc/sysdev/mpic.c b/arch/powerpc/sysdev/mpic.c
index 0a13ecb270c7..3cc2f9159ab1 100644
--- a/arch/powerpc/sysdev/mpic.c
+++ b/arch/powerpc/sysdev/mpic.c
@@ -54,7 +54,7 @@ static DEFINE_RAW_SPINLOCK(mpic_lock);
54 54
55#ifdef CONFIG_PPC32 /* XXX for now */ 55#ifdef CONFIG_PPC32 /* XXX for now */
56#ifdef CONFIG_IRQ_ALL_CPUS 56#ifdef CONFIG_IRQ_ALL_CPUS
57#define distribute_irqs (!(mpic->flags & MPIC_SINGLE_DEST_CPU)) 57#define distribute_irqs (1)
58#else 58#else
59#define distribute_irqs (0) 59#define distribute_irqs (0)
60#endif 60#endif
@@ -1703,7 +1703,7 @@ void mpic_setup_this_cpu(void)
1703 * it differently, then we should make sure we also change the default 1703 * it differently, then we should make sure we also change the default
1704 * values of irq_desc[].affinity in irq.c. 1704 * values of irq_desc[].affinity in irq.c.
1705 */ 1705 */
1706 if (distribute_irqs) { 1706 if (distribute_irqs && !(mpic->flags & MPIC_SINGLE_DEST_CPU)) {
1707 for (i = 0; i < mpic->num_sources ; i++) 1707 for (i = 0; i < mpic->num_sources ; i++)
1708 mpic_irq_write(i, MPIC_INFO(IRQ_DESTINATION), 1708 mpic_irq_write(i, MPIC_INFO(IRQ_DESTINATION),
1709 mpic_irq_read(i, MPIC_INFO(IRQ_DESTINATION)) | msk); 1709 mpic_irq_read(i, MPIC_INFO(IRQ_DESTINATION)) | msk);