commit d05c65fff0 ("genirq: spurious: Run only one poller at a time") introduced a regression, leaving the boot options 'irqfixup' and 'irqpoll' non-functional. The patch placed tests in each function, to exit if the function is already running. The test in 'misrouted_irq' exited when it should have proceeded, effectively disabling 'misrouted_irq' and 'poll_spurious_irqs'. The check for an already running poller needs to be "!= 1" not "== 1" as "1" is the value when the first poller starts running.
Showing the changes to kernel (1 of 1 file). Show all
Unified · Split
| @@ -115,7 +115,7 @@ static int misrouted_irq(int irq) · 114 unmodified lines | ||
| 115 | 115 | struct irq_desc *desc; |
| 116 | 116 | int i, ok = 0; |
| 117 | 117 | |
| 118 | − if (atomic_inc_return(&irq_poll_active) == 1) | |
| 118 | + if (atomic_inc_return(&irq_poll_active) != 1) | |
| 119 | 119 | goto out; |
| 120 | 120 | |
| 121 | 121 | irq_poll_cpu = smp_processor_id(); |