]> git.neil.brown.name Git - history.git/commitdiff
[PATCH] ppc64: fix XICS startup function to enable as well
authorPaul Mackerras <paulus@samba.org>
Thu, 21 Oct 2004 03:56:51 +0000 (20:56 -0700)
committerLinus Torvalds <torvalds@evo.osdl.org>
Thu, 21 Oct 2004 03:56:51 +0000 (20:56 -0700)
When the generic IRQ patch went in, it changed the behaviour of setup_irq
(compared to the previous ppc64 version) in that we now don't call the
handler's enable function if it has a startup function.  The XICS interrupt
controller has a startup function, and so we weren't getting any interrupts
through the XICS because they never got enabled.  This patch adds a call to
xics_enable_irq to xics_startup and fixes the problem.

Signed-off-by: Paul Mackerras <paulus@samba.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
arch/ppc64/kernel/xics.c

index ae15d22159ece6f3301e6d1dd7dfa02c4d5c272d..a23da49b09cc4b11b7c1004b0694b1d0a3f5fc22 100644 (file)
@@ -216,12 +216,15 @@ xics_ops pSeriesLP_ops = {
 
 static unsigned int xics_startup(unsigned int virq)
 {
-       virq = irq_offset_down(virq);
-       if (radix_tree_insert(&irq_map, virt_irq_to_real(virq),
-                             &virt_irq_to_real_map[virq]) == -ENOMEM)
+       unsigned int irq;
+
+       irq = irq_offset_down(virq);
+       if (radix_tree_insert(&irq_map, virt_irq_to_real(irq),
+                             &virt_irq_to_real_map[irq]) == -ENOMEM)
                printk(KERN_CRIT "Out of memory creating real -> virtual"
                       " IRQ mapping for irq %u (real 0x%x)\n",
-                      virq, virt_irq_to_real(virq));
+                      virq, virt_irq_to_real(irq));
+       xics_enable_irq(virq);
        return 0;       /* return value is ignored */
 }