We hit the bad_irq stack when if 99,900 of the previous 100,000 interrupts have not been handled.
The other 100-of-100,000 interrupts may have been a correctly functioning device sharing an IRQ with the failing one.
So it will be a matter of chance that 99,900 are unhandled for disabling the irq,
the irq will not get disabled even if total unahandled is 99,...
Exactly the same. However if we are processing an interrupt then possibly nothing, or nothing until we finish.
What we do in all cases:
unconditionally save mode, and set mode to supervisor mode (done by hardware. Triggered by interrupt)
unconditionally save state and switch stack
run interrupt code
unconditionally switch stack back, restore state and ...