Re: [PATCH] pinctrl: mcp23s08: Get rid of spurious level interrupts

From: Dmitry Mastykin
Date: Fri Feb 07 2025 - 15:41:14 EST


Hi Linus,
thank you for the answer.
I made more tests and think that this patch shouldn't be applied.
It removes duplicated interrupts, but sometimes they increase the performance:
a new interrupt may come during handling a spurious one, and a
spurious one will become valid (resulting in a kind of polling). I see
the number of my touchscreen interrupts reduced from 200 to 130 per
second with this patch. It may be a bigger problem for users, than
duplicated interrupts. Sorry.

Kind regards,
Dmitry

On Thu, Feb 6, 2025 at 12:26 PM Linus Walleij <linus.walleij@xxxxxxxxxx> wrote:
>
> On Wed, Jan 22, 2025 at 1:05 PM Dmitry Mastykin <mastichi@xxxxxxxxx> wrote:
>
> > irq_mask()/irq_unmask() are not called for nested interrupts. So level
> > interrupts are never masked, chip's interrupt output is not cleared on
> > INTCAP or GPIO read, the irq handler is uselessly called again. Nested
> > irq handler is not called again, because interrupt reason is cleared by
> > its first call.
> > /proc/interrupts shows that number of chip's irqs is greater than
> > number of nested irqs.
> >
> > This patch adds masking and unmasking level interrupts inside irq handler.
> >
> > Signed-off-by: Dmitry Mastykin <mastichi@xxxxxxxxx>
>
> Patch tentatively applied as non-urgent fix.
>
> If this is urgent, I need a Fixes: tags and we should also tag it
> for stable, is this a big problem for users? I don't have the big picture
> here.
>
> Adding Sebastian, if he's still using this expander.
>
> Yours,
> Linus Walleij