• Arseniy Krasnov's avatar
    irqchip/meson-gpio: Convert meson_gpio_irq_controller::lock to 'raw_spinlock_t' · f872d4af
    Arseniy Krasnov authored
    This lock is acquired under irq_desc::lock with interrupts disabled.
    
    When PREEMPT_RT is enabled, 'spinlock_t' becomes preemptible, which results
    in invalid lock acquire context;
    
      [ BUG: Invalid wait context ]
      swapper/0/1 is trying to lock:
      ffff0000008fed30 (&ctl->lock){....}-{3:3}, at: meson_gpio_irq_update_bits0
      other info that might help us debug this:
      context-{5:5}
      3 locks held by swapper/0/1:
       #0: ffff0000003cd0f8 (&dev->mutex){....}-{4:4}, at: __driver_attach+0x90c
       #1: ffff000004714650 (&desc->request_mutex){+.+.}-{4:4}, at: __setup_irq0
       #2: ffff0000047144c8 (&irq_desc_lock_class){-.-.}-{2:2}, at: __setup_irq0
      stack backtrace:
      CPU: 1 PID: 1 Comm: swapper/0 Not tainted 6.9.9-sdkernel #1
      Call trace:
       _raw_spin_lock_irqsave+0x60/0x88
       meson_gpio_irq_update_bits+0x34/0x70
       meson8_gpio_irq_set_type+0x78/0xc4
       meson_gpio_irq_set_type+0x30/0x60
       __irq_set_trigger+0x60/0x180
       __setup_irq+0x30c/0x6e0
       request_threaded_irq+0xec/0x1a4
    
    Fixes: 215f4cc0 ("irqchip/meson: Add support for gpio interrupt controller")
    Signed-off-by: default avatarArseniy Krasnov <avkrasnov@salutedevices.com>
    Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/all/20240729131850.3015508-1-avkrasnov@salutedevices.com
    f872d4af
irq-meson-gpio.c 16.6 KB