For threaded interrupt handlers in oneshot mode, the
hard irq handler will not yet have satisfied the device,
so we need to keep the line masked until irq_finalize_oneshot().
---
 kernel/irq/chip.c |    3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)

diff --git a/kernel/irq/chip.c b/kernel/irq/chip.c
index 2d25c62..b79ec1d 100644
--- a/kernel/irq/chip.c
+++ b/kernel/irq/chip.c
@@ -589,7 +589,8 @@ handle_fasteoi_irq(unsigned int irq, struct irq_desc *desc)
        raw_spin_lock(&desc->lock);
        desc->status &= ~IRQ_INPROGRESS;
 #ifdef CONFIG_IPIPE
-       desc->irq_data.chip->irq_unmask(&desc->irq_data);
+       if (!(desc->status & IRQ_MASKED))
+               desc->irq_data.chip->irq_unmask(&desc->irq_data);
 out:
 #else
 out:
-- 
1.7.6.4


_______________________________________________
Adeos-main mailing list
Adeos-main@gna.org
https://mail.gna.org/listinfo/adeos-main

Reply via email to