08.07.2020 13:11, Andy Shevchenko пишет: > On Wed, Jul 8, 2020 at 12:19 PM Dmitry Osipenko <digetx@xxxxxxxxx> wrote: >> 08.07.2020 11:46, Andy Shevchenko пишет: >>> On Wed, Jul 8, 2020 at 11:29 AM Dmitry Osipenko <digetx@xxxxxxxxx> wrote: >>>> >>>> Check whether GPIO IRQ is enabled before proceeding with handling the >>>> interrupt request. The interrupt handler now returns IRQ_NONE if none >>>> of interrupts were handled, which is usually a sign of a problem. >>> >>> ... >>> >>>> - pending = value; >>>> + pending = value & gpio->irq_enb_mask; >>> >>>> + if (!pending) >>>> + return IRQ_NONE; >>> >>> for_each_set_bit() should take care of it, no? >> >> Do you mean that the handle_nested_irq() takes care of handling >> unrequested interrupts? Actually, looks like it cares. Alright, I'll >> drop this patch since it should be unnecessary. Thank you for the comment! > > I think it's still good to have reduced IRQs to handle by dropping not > enabled ones, my comment was about the case when pending == 0. Sorry > if it was unclear. It should be unnecessary since we now see that the handle_nested_irq() checks whether interrupt was requested and if it wasn't, then particular GPIO interrupt will be treated as spurious [1]. The pending == 0 condition is an extreme case, I don't think that there is a need to optimize it without any good reason. [1] https://elixir.bootlin.com/linux/v5.8-rc3/source/kernel/irq/chip.c#L485 Hence it should be better to drop this patch.