On Thu, Nov 12 2020 at 08:26, Bjorn Helgaas wrote: > On Thu, Nov 12, 2020 at 02:50:42PM +0100, Thomas Gleixner wrote: >> So I had a closer look and the reason why it only matters for the >> chained handler case is that >> >> __irq_set_handler(..., is_chained = true, ...) >> >> starts up the interrupt immediately. So the order for this _must_ be: >> >> set_handler_data() -> set_handler() >> >> For regular interrupts it's really the mapping and allocation code which >> does this long before the interrupt is started up. So the ordering does >> not matter because the handler can't be reached before the full >> setup is finished and the interrupt is actually started up. > > If the order truly doesn't matter here, maybe it's worth changing it > to "set data, set handler" to avoid the need for a closer look to > verify correctness and to make it harder to copy and paste to a place > where it *does* matter? Makes sense.