aboutsummaryrefslogtreecommitdiffstats
path: root/arch/powerpc/sysdev
diff options
context:
space:
mode:
authorSebastian Andrzej Siewior <bigeasy@linutronix.de>2009-08-05 15:41:12 -0400
committerBenjamin Herrenschmidt <benh@kernel.crashing.org>2009-08-19 20:27:23 -0400
commit8640d3bf71fa0f25adf86527fe69a32372427d4b (patch)
treef81c89fb69efb871dcbfe90b4213ab153a15d64d /arch/powerpc/sysdev
parent6c75933c00049bee59562a18843a4f133ec2bfe4 (diff)
powerpc/ipic: unmask all interrupt sources
in case the interrupt controller was used in an earlier life then it is possible it is that some of its sources were used and are still unmask. If the (unmasked) device is active and is creating interrupts (or one interrupts was pending since the interrupts were disabled) then the boot process "ends" very soon. Once external interrupts are enabled, we land in -> do_IRQ -> call ppc_md.get_irq() -> ipic_read() gets the source number -> irq_linear_revmap(source) -> revmap[source] == NO_IRQ -> irq_find_mapping(source) returns NO_IRQ because no source is registered -> source is NO_IRQ, ppc_spurious_interrupts gets incremented, no further action. Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Signed-off-by: Kumar Gala <galak@kernel.crashing.org> Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Diffstat (limited to 'arch/powerpc/sysdev')
-rw-r--r--arch/powerpc/sysdev/ipic.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/arch/powerpc/sysdev/ipic.c b/arch/powerpc/sysdev/ipic.c
index 69e2630c9062..ebb7e5844012 100644
--- a/arch/powerpc/sysdev/ipic.c
+++ b/arch/powerpc/sysdev/ipic.c
@@ -781,6 +781,9 @@ struct ipic * __init ipic_init(struct device_node *node, unsigned int flags)
781 primary_ipic = ipic; 781 primary_ipic = ipic;
782 irq_set_default_host(primary_ipic->irqhost); 782 irq_set_default_host(primary_ipic->irqhost);
783 783
784 ipic_write(ipic->regs, IPIC_SIMSR_H, 0);
785 ipic_write(ipic->regs, IPIC_SIMSR_L, 0);
786
784 printk ("IPIC (%d IRQ sources) at %p\n", NR_IPIC_INTS, 787 printk ("IPIC (%d IRQ sources) at %p\n", NR_IPIC_INTS,
785 primary_ipic->regs); 788 primary_ipic->regs);
786 789