Chapter 5. __do_IRQ entry point

The original implementation __do_IRQ() is an alternative entry point for all types of interrupts.

This handler turned out to be not suitable for all interrupt hardware and was therefore reimplemented with split functionality for egde/level/simple/percpu interrupts. This is not only a functional optimization. It also shortens code paths for interrupts.

To make use of the split implementation, replace the call to __do_IRQ by a call to desc->chip->handle_irq() and associate the appropriate handler function to desc->chip->handle_irq(). In most cases the generic handler implementations should be sufficient.