From 2a0e92f47d29c40e86a0201328239d13e3d702dd Mon Sep 17 00:00:00 2001 From: Paul Mackerras Date: Wed, 20 Oct 2004 20:56:51 -0700 Subject: [PATCH] [PATCH] ppc64: fix XICS startup function to enable as well 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 Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds --- arch/ppc64/kernel/xics.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/arch/ppc64/kernel/xics.c b/arch/ppc64/kernel/xics.c index ae15d22159ece..a23da49b09cc4 100644 --- a/arch/ppc64/kernel/xics.c +++ b/arch/ppc64/kernel/xics.c @@ -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 */ } -- 2.53.0