• Bartosz Golaszewski's avatar
    irqchip/irq-mtk-sysirq: Replace spinlock with raw_spinlock · 6eeb997a
    Bartosz Golaszewski authored
    This driver may take a regular spinlock when a raw spinlock
    (irq_desc->lock) is already taken which results in the following
    lockdep splat:
    
    =============================
    [ BUG: Invalid wait context ]
    5.7.0-rc7 #1 Not tainted
    -----------------------------
    swapper/0/0 is trying to lock:
    ffffff800303b798 (&chip_data->lock){....}-{3:3}, at: mtk_sysirq_set_type+0x48/0xc0
    other info that might help us debug this:
    context-{5:5}
    2 locks held by swapper/0/0:
     #0: ffffff800302ee68 (&desc->request_mutex){....}-{4:4}, at: __setup_irq+0xc4/0x8a0
     #1: ffffff800302ecf0 (&irq_desc_lock_class){....}-{2:2}, at: __setup_irq+0xe4/0x8a0
    stack backtrace:
    CPU: 0 PID: 0 Comm: swapper/0 Not tainted 5.7.0-rc7 #1
    Hardware name: Pumpkin MT8516 (DT)
    Call trace:
     dump_backtrace+0x0/0x180
     show_stack+0x14/0x20
     dump_stack+0xd0/0x118
     __lock_acquire+0x8c8/0x2270
     lock_acquire+0xf8/0x470
     _raw_spin_lock_irqsave+0x50/0x78
     mtk_sysirq_set_type+0x48/0xc0
     __irq_set_trigger+0x58/0x170
     __setup_irq+0x420/0x8a0
     request_threaded_irq+0xd8/0x190
     timer_of_init+0x1e8/0x2c4
     mtk_gpt_init+0x5c/0x1dc
     timer_probe+0x74/0xf4
     time_init+0x14/0x44
     start_kernel+0x394/0x4f0
    
    Replace the spinlock_t with raw_spinlock_t to avoid this warning.
    Signed-off-by: default avatarBartosz Golaszewski <bgolaszewski@baylibre.com>
    Signed-off-by: default avatarMarc Zyngier <maz@kernel.org>
    Link: https://lore.kernel.org/r/20200615074445.3579-1-brgl@bgdev.pl
    6eeb997a
irq-mtk-sysirq.c 5.75 KB