genirq/cpuhotplug: Skip suspended interrupts when restoring affinity
authorDavid Stevens <stevensd@chromium.org>
Wed, 24 Apr 2024 09:03:41 +0000 (18:03 +0900)
committerThomas Gleixner <tglx@linutronix.de>
Wed, 24 Apr 2024 18:42:57 +0000 (20:42 +0200)
commita60dd06af674d3bb76b40da5d722e4a0ecefe650
tree96cc55f7d0eee899a7c5cabf7ba48ddd26d06660
parent7da4ba315e3980ca3e87d40a10908f716f026d2c
genirq/cpuhotplug: Skip suspended interrupts when restoring affinity

irq_restore_affinity_of_irq() restarts managed interrupts unconditionally
when the first CPU in the affinity mask comes online. That's correct during
normal hotplug operations, but not when resuming from S3 because the
drivers are not resumed yet and interrupt delivery is not expected by them.

Skip the startup of suspended interrupts and let resume_device_irqs() deal
with restoring them. This ensures that irqs are not delivered to drivers
during the noirq phase of resuming from S3, after non-boot CPUs are brought
back online.

Signed-off-by: David Stevens <stevensd@chromium.org>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Link: https://lore.kernel.org/r/20240424090341.72236-1-stevensd@chromium.org
kernel/irq/cpuhotplug.c
kernel/irq/manage.c