genirq: Wake interrupt threads immediately when changing affinity
authorCrystal Wood <crwood@redhat.com>
Mon, 22 Jan 2024 23:53:53 +0000 (17:53 -0600)
committerThomas Gleixner <tglx@linutronix.de>
Mon, 19 Feb 2024 10:43:46 +0000 (11:43 +0100)
commitc99303a2d2a25ba467ebf75d3e446b58c7e7df3a
tree6d7c5d9564af2934c32edf870b6c26f10964565f
parentee4c1592b7e9a5bf89b962d7afd7e9b04c8d16ee
genirq: Wake interrupt threads immediately when changing affinity

The affinity setting of interrupt threads happens in the context of the
thread when the thread is woken up by an hard interrupt. As this can be an
arbitrary after changing the affinity, the thread can become runnable on an
isolated CPU and cause isolation disruption.

Avoid this by checking the set affinity request in wait_for_interrupt() and
waking the threads immediately when the affinity is modified.

Note that this is of the most benefit on systems where the interrupt
affinity itself does not need to be deferred to the interrupt handler, but
even where that's not the case, the total dirsuption will be less.

Signed-off-by: Crystal Wood <crwood@redhat.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Link: https://lore.kernel.org/r/20240122235353.15235-1-crwood@redhat.com
kernel/irq/manage.c