From: Jan Kiszka <jan.kis...@siemens.com>

Likely needed since c942cee46bba which split enabling and startup.

This fixes unpopulated vectors in the IOAPIC on x86 at least, possibly
more.

Signed-off-by: Jan Kiszka <jan.kis...@siemens.com>
---
 kernel/irq/chip.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/kernel/irq/chip.c b/kernel/irq/chip.c
index 65d345b727be..22386e509f68 100644
--- a/kernel/irq/chip.c
+++ b/kernel/irq/chip.c
@@ -1087,6 +1087,7 @@ int ipipe_enable_irq(unsigned int irq)
        struct irq_desc *desc;
        struct irq_chip *chip;
        unsigned long flags;
+       int err;
 
        desc = irq_to_desc(irq);
        if (desc == NULL)
@@ -1098,6 +1099,10 @@ int ipipe_enable_irq(unsigned int irq)
 
                ipipe_root_only();
 
+               err = irq_activate(desc);
+               if (err)
+                       return err;
+
                raw_spin_lock_irqsave(&desc->lock, flags);
                if (desc->istate & IPIPE_IRQS_NEEDS_STARTUP) {
                        desc->istate &= ~IPIPE_IRQS_NEEDS_STARTUP;
-- 
2.16.4


Reply via email to