2
0
mirror of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git synced 2025-09-04 20:19:47 +08:00

genirq/autoprobe: Switch to lock guards

Convert all lock/unlock pairs to guards.

No functional change.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Link: https://lore.kernel.org/all/20250429065420.188866381@linutronix.de
This commit is contained in:
Thomas Gleixner 2025-04-29 08:54:52 +02:00
parent 5d964a9f7c
commit e80618b27a

View File

@ -43,18 +43,16 @@ unsigned long probe_irq_on(void)
* flush such a longstanding irq before considering it as spurious. * flush such a longstanding irq before considering it as spurious.
*/ */
for_each_irq_desc_reverse(i, desc) { for_each_irq_desc_reverse(i, desc) {
raw_spin_lock_irq(&desc->lock); guard(raw_spinlock_irq)(&desc->lock);
if (!desc->action && irq_settings_can_probe(desc)) { if (!desc->action && irq_settings_can_probe(desc)) {
/* /*
* Some chips need to know about probing in * Some chips need to know about probing in
* progress: * progress:
*/ */
if (desc->irq_data.chip->irq_set_type) if (desc->irq_data.chip->irq_set_type)
desc->irq_data.chip->irq_set_type(&desc->irq_data, desc->irq_data.chip->irq_set_type(&desc->irq_data, IRQ_TYPE_PROBE);
IRQ_TYPE_PROBE);
irq_activate_and_startup(desc, IRQ_NORESEND); irq_activate_and_startup(desc, IRQ_NORESEND);
} }
raw_spin_unlock_irq(&desc->lock);
} }
/* Wait for longstanding interrupts to trigger. */ /* Wait for longstanding interrupts to trigger. */
@ -66,13 +64,12 @@ unsigned long probe_irq_on(void)
* happened in the previous stage, it may have masked itself) * happened in the previous stage, it may have masked itself)
*/ */
for_each_irq_desc_reverse(i, desc) { for_each_irq_desc_reverse(i, desc) {
raw_spin_lock_irq(&desc->lock); guard(raw_spinlock_irq)(&desc->lock);
if (!desc->action && irq_settings_can_probe(desc)) { if (!desc->action && irq_settings_can_probe(desc)) {
desc->istate |= IRQS_AUTODETECT | IRQS_WAITING; desc->istate |= IRQS_AUTODETECT | IRQS_WAITING;
if (irq_activate_and_startup(desc, IRQ_NORESEND)) if (irq_activate_and_startup(desc, IRQ_NORESEND))
desc->istate |= IRQS_PENDING; desc->istate |= IRQS_PENDING;
} }
raw_spin_unlock_irq(&desc->lock);
} }
/* /*
@ -84,18 +81,16 @@ unsigned long probe_irq_on(void)
* Now filter out any obviously spurious interrupts * Now filter out any obviously spurious interrupts
*/ */
for_each_irq_desc(i, desc) { for_each_irq_desc(i, desc) {
raw_spin_lock_irq(&desc->lock); guard(raw_spinlock_irq)(&desc->lock);
if (desc->istate & IRQS_AUTODETECT) { if (desc->istate & IRQS_AUTODETECT) {
/* It triggered already - consider it spurious. */ /* It triggered already - consider it spurious. */
if (!(desc->istate & IRQS_WAITING)) { if (!(desc->istate & IRQS_WAITING)) {
desc->istate &= ~IRQS_AUTODETECT; desc->istate &= ~IRQS_AUTODETECT;
irq_shutdown_and_deactivate(desc); irq_shutdown_and_deactivate(desc);
} else } else if (i < 32) {
if (i < 32) mask |= 1 << i;
mask |= 1 << i; }
} }
raw_spin_unlock_irq(&desc->lock);
} }
return mask; return mask;
@ -121,7 +116,7 @@ unsigned int probe_irq_mask(unsigned long val)
int i; int i;
for_each_irq_desc(i, desc) { for_each_irq_desc(i, desc) {
raw_spin_lock_irq(&desc->lock); guard(raw_spinlock_irq)(&desc->lock);
if (desc->istate & IRQS_AUTODETECT) { if (desc->istate & IRQS_AUTODETECT) {
if (i < 16 && !(desc->istate & IRQS_WAITING)) if (i < 16 && !(desc->istate & IRQS_WAITING))
mask |= 1 << i; mask |= 1 << i;
@ -129,7 +124,6 @@ unsigned int probe_irq_mask(unsigned long val)
desc->istate &= ~IRQS_AUTODETECT; desc->istate &= ~IRQS_AUTODETECT;
irq_shutdown_and_deactivate(desc); irq_shutdown_and_deactivate(desc);
} }
raw_spin_unlock_irq(&desc->lock);
} }
mutex_unlock(&probing_active); mutex_unlock(&probing_active);
@ -160,8 +154,7 @@ int probe_irq_off(unsigned long val)
struct irq_desc *desc; struct irq_desc *desc;
for_each_irq_desc(i, desc) { for_each_irq_desc(i, desc) {
raw_spin_lock_irq(&desc->lock); guard(raw_spinlock_irq)(&desc->lock);
if (desc->istate & IRQS_AUTODETECT) { if (desc->istate & IRQS_AUTODETECT) {
if (!(desc->istate & IRQS_WAITING)) { if (!(desc->istate & IRQS_WAITING)) {
if (!nr_of_irqs) if (!nr_of_irqs)
@ -171,7 +164,6 @@ int probe_irq_off(unsigned long val)
desc->istate &= ~IRQS_AUTODETECT; desc->istate &= ~IRQS_AUTODETECT;
irq_shutdown_and_deactivate(desc); irq_shutdown_and_deactivate(desc);
} }
raw_spin_unlock_irq(&desc->lock);
} }
mutex_unlock(&probing_active); mutex_unlock(&probing_active);