diff options
| author | Ingo Molnar <mingo@elte.hu> | 2002-07-27 06:08:21 -0700 |
|---|---|---|
| committer | Russell King <rmk@flint.arm.linux.org.uk> | 2002-07-27 06:08:21 -0700 |
| commit | 3f9a148474f55bd33c6a2519bd1c0b5aeb995b96 (patch) | |
| tree | c30df704065bac3b5bdab556b51e35f3cb17ca6a /include/linux/kernel.h | |
| parent | c005bcd11a52992059bac1e424bd40a269ff6a59 (diff) | |
[PATCH] fix synchronize_irq() bug
This fixes a synchronize_irq() bug: if the interrupt is freed while an
IRQ handler is running (irq state is IRQ_INPROGRESS) then
synchronize_irq() will return early, which is incorrect.
there was another do_IRQ() bug that in fact necessiated the bad code that
caused the synchronize_irq() bug - we kept the IRQ_INPROGRESS bit set for
not active interrupt sources - after they happen for the first time. Now
the only effect this has is on i8259A irq handling - we used to keep these
irqs disabled after the first 'spurious' interrupt happened. Now what the
i8259A code really wants to do IMO is to keep the interrupt disabled if
there is no handler defined for that interrupt source. The patch adds
exactly this. I dont remember why this was needed in the first place (irq
probing? avoidance of interrupt storms?), but with the patch the behavior
should be equivalent.
Diffstat (limited to 'include/linux/kernel.h')
0 files changed, 0 insertions, 0 deletions
