mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-11 12:28:41 +08:00
pinctrl: renesas: rzg2l: Use spin_{lock,unlock}_irq{save,restore}
On PREEMPT_RT kernels the spinlock_t maps to an rtmutex. Using
raw_spin_lock_irqsave()/raw_spin_unlock_irqrestore() on
&pctrl->lock.rlock breaks the PREEMPT_RT builds. To fix this use
spin_lock_irqsave()/spin_unlock_irqrestore() on &pctrl->lock.
Fixes: 02cd2d3be1
("pinctrl: renesas: rzg2l: Configure the interrupt type on resume")
Reported-by: Diederik de Haas <didi.debian@cknow.org>
Closes: https://lore.kernel.org/all/131999629.KQPSlr0Zke@bagend
Signed-off-by: Claudiu Beznea <claudiu.beznea.uj@bp.renesas.com>
Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
Link: https://lore.kernel.org/r/20240522055421.2842689-1-claudiu.beznea.uj@bp.renesas.com
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
This commit is contained in:
parent
1613e604df
commit
a39741d38c
@ -2071,11 +2071,11 @@ static void rzg2l_gpio_irq_restore(struct rzg2l_pinctrl *pctrl)
|
||||
* This has to be atomically executed to protect against a concurrent
|
||||
* interrupt.
|
||||
*/
|
||||
raw_spin_lock_irqsave(&pctrl->lock.rlock, flags);
|
||||
spin_lock_irqsave(&pctrl->lock, flags);
|
||||
ret = rzg2l_gpio_irq_set_type(data, irqd_get_trigger_type(data));
|
||||
if (!ret && !irqd_irq_disabled(data))
|
||||
rzg2l_gpio_irq_enable(data);
|
||||
raw_spin_unlock_irqrestore(&pctrl->lock.rlock, flags);
|
||||
spin_unlock_irqrestore(&pctrl->lock, flags);
|
||||
|
||||
if (ret)
|
||||
dev_crit(pctrl->dev, "Failed to set IRQ type for virq=%u\n", virq);
|
||||
|
Loading…
Reference in New Issue
Block a user