Re: [Linuxarm] Re: [PATCH for next v1 1/2] gpio: omap: Replace raw_spin_lock_irqsave with raw_spin_lock in omap_gpio_irq_handler()

From: Arnd Bergmann
Date: Fri Feb 12 2021 - 15:25:17 EST


On Fri, Feb 12, 2021 at 12:53 PM Grygorii Strashko
<grygorii.strashko@xxxxxx> wrote:
>
> The worst RT case I can imagine is when gpio API is still called from hard IRQ context by some
> other device driver - some toggling for example.
> Note. RT or "threadirqs" does not mean gpiochip become sleepable.
>
> In this case:
> threaded handler
> raw_spin_lock
> IRQ from other device
> hard_irq handler
> gpiod_x()
> raw_spin_lock_irqsave() -- oops
>

Good point, I had missed the fact that drivers can call gpio functions from
hardirq context when I replied earlier, gpio is clearly special here.

Arnd