From: Jon Hunter Date: Wed, 14 May 2025 09:50:41 +0000 (+0100) Subject: genirq/manage: Use the correct lock guard in irq_set_irq_wake() X-Git-Tag: v6.16-rc1~189^2~3 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=58eb5721a445ea0af310d1410d7117a1910627bc;p=thirdparty%2Flinux.git genirq/manage: Use the correct lock guard in irq_set_irq_wake() Commit 8589e325ba4f ("genirq/manage: Rework irq_set_irq_wake()") updated the irq_set_irq_wake() to use the new guards for locking the interrupt descriptor. However, in doing so it inadvertently changed irq_set_irq_wake() such that the 'chip_bus_lock' is no longer acquired. This has caused system suspend tests to fail on some Tegra platforms. Fix this by correcting the guard used in irq_set_irq_wake() to ensure the 'chip_bus_lock' is held. Fixes: 8589e325ba4f ("genirq/manage: Rework irq_set_irq_wake()") Signed-off-by: Jon Hunter Signed-off-by: Thomas Gleixner Link: https://lore.kernel.org/all/20250514095041.1109783-1-jonathanh@nvidia.com --- diff --git a/kernel/irq/manage.c b/kernel/irq/manage.c index 2861e11acf3a0..c94837382037e 100644 --- a/kernel/irq/manage.c +++ b/kernel/irq/manage.c @@ -846,7 +846,7 @@ static int set_irq_wake_real(unsigned int irq, unsigned int on) */ int irq_set_irq_wake(unsigned int irq, unsigned int on) { - scoped_irqdesc_get_and_lock(irq, IRQ_GET_DESC_CHECK_GLOBAL) { + scoped_irqdesc_get_and_buslock(irq, IRQ_GET_DESC_CHECK_GLOBAL) { struct irq_desc *desc = scoped_irqdesc; int ret = 0;