[PATCH 2/7] gpio: brcmstb: release the bgpio lock during irq handlers
From: Gregory Fong <hidden>
Date: 2017-10-04 03:08:05
Also in:
linux-gpio, lkml
On Tue, Oct 3, 2017 at 7:09 PM, Doug Berger [off-list ref] wrote:
On 10/03/2017 06:55 PM, Gregory Fong wrote:quoted
Hi Doug, On Fri, Sep 29, 2017 at 8:40 PM, Doug Berger [off-list ref] wrote:quoted
The basic memory-mapped GPIO controller lock must be released before calling the registered GPIO interrupt handlers to allow the interrupt handlers to access the hardware. Otherwise, the hardware accesses will deadlock when they attempt to grab the lock.I was having some trouble understanding exactly what the problem was here, but I think I see it now. Since this locks the entire bank, where some GPIOs might be set as inputs and some as inputs (and interrupt sources), then an interrupt on a GPIO that is supposed to set another GPIO in the bank would result in deadlock. Is that correct? If so, please update the commit message to make that clear, and nice fix. If not that, it would be nice to know what scenario can cause a problem.That is an example, but there are really many possibilities. Basically, if a registered interrupt handler wants to access its GPIO you are likely to run into trouble. Another example might be an interrupt that is configured to trigger on either edge transition and the handler wants to know whether the input is currently high or low. I can submit a V2 with a change in the description if you would like, but I'm not sure what the clearest example would be.
If you could just mention both of these possible cases, that would be great! With that change, Acked-by: Gregory Fong <redacted>