This bit is set my the kernel on __free_irq. That's unproblematic in the absence of ipipe, but when it is enabled, handle_fasteoi_irq will fail to reenable the line on exit due to this spurious state. Only required on 2.6 kernels, later versions properly clear the MASKED state themselves.
Signed-off-by: Jan Kiszka <[email protected]> --- kernel/irq/chip.c | 2 +- kernel/irq/manage.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/kernel/irq/chip.c b/kernel/irq/chip.c index b79ec1d..aeb8cc1 100644 --- a/kernel/irq/chip.c +++ b/kernel/irq/chip.c @@ -878,7 +878,7 @@ __set_irq_handler(unsigned int irq, irq_flow_handler_t handle, int is_chained, desc->name = name; if (handle != handle_bad_irq && is_chained) { - desc->status &= ~IRQ_DISABLED; + desc->status &= ~(IRQ_DISABLED | IRQ_MASKED); desc->status |= IRQ_NOREQUEST | IRQ_NOPROBE; desc->depth = 0; desc->irq_data.chip->irq_startup(&desc->irq_data); diff --git a/kernel/irq/manage.c b/kernel/irq/manage.c index 9033c1c..57fdf57 100644 --- a/kernel/irq/manage.c +++ b/kernel/irq/manage.c @@ -785,7 +785,7 @@ __setup_irq(unsigned int irq, struct irq_desc *desc, struct irqaction *new) if (!(desc->status & IRQ_NOAUTOEN)) { desc->depth = 0; - desc->status &= ~IRQ_DISABLED; + desc->status &= ~(IRQ_DISABLED | IRQ_MASKED); desc->irq_data.chip->irq_startup(&desc->irq_data); } else /* Undo nested disables: */ -- 1.7.3.4 _______________________________________________ Xenomai mailing list [email protected] http://www.xenomai.org/mailman/listinfo/xenomai
