I'm sure there's a good reason for this, but I can't see what it is. Inside [`__handle_irq_event_percpu`](https://elixir.bootlin.com/linux/latest/source/kernel/irq/handle.c#L137) the kernel loops over all the handlers registered for a particular IRQ line and calls it. What I don't understand is why this loop isn't exited when the first handler returning `IRQ_HANDLED` is reached? It seems like a simple performance improvement, so there must be something I don't understand.

Does anyone know why?