All of lore.kernel.org
 help / color / mirror / Atom feed
From: Andy Shevchenko <andriy.shevchenko@intel.com>
To: Emanuele Ghidoli <ghidoliemanuele@gmail.com>
Cc: Bartosz Golaszewski <brgl@bgdev.pl>,
	Geert Uytterhoeven <geert@linux-m68k.org>,
	Linus Walleij <linus.walleij@linaro.org>,
	Francesco Dolcini <francesco@dolcini.it>,
	Bartosz Golaszewski <bartosz.golaszewski@linaro.org>,
	Emanuele Ghidoli <emanuele.ghidoli@toradex.com>,
	linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org,
	Marek Vasut <marek.vasut@gmail.com>,
	stable@vger.kernel.org,
	Francesco Dolcini <francesco.dolcini@toradex.com>
Subject: Re: [PATCH v1] gpio: pca953x: fix IRQ storm on system wake up
Date: Mon, 7 Apr 2025 18:40:45 +0300	[thread overview]
Message-ID: <Z_Px_ajf96J_LlcD@smile.fi.intel.com> (raw)
In-Reply-To: <02cab60d-9748-4227-a4aa-33373ea0be38@gmail.com>

On Mon, Apr 07, 2025 at 05:11:14PM +0200, Emanuele Ghidoli wrote:
> On 03/04/2025 15:56, Bartosz Golaszewski wrote:
> > On Thu, Apr 3, 2025 at 3:54 PM Andy Shevchenko
> > <andriy.shevchenko@intel.com> wrote:
> >>
> >> +Cc: Geert
> >>
> >> On Thu, Apr 03, 2025 at 02:07:05PM +0200, Bartosz Golaszewski wrote:
> >>> On Wed, 26 Mar 2025 18:38:38 +0100, Francesco Dolcini wrote:
> >>
> >>>> If an input changes state during wake-up and is used as an interrupt
> >>>> source, the IRQ handler reads the volatile input register to clear the
> >>>> interrupt mask and deassert the IRQ line. However, the IRQ handler is
> >>>> triggered before access to the register is granted, causing the read
> >>>> operation to fail.
> >>>>
> >>>> As a result, the IRQ handler enters a loop, repeatedly printing the
> >>>> "failed reading register" message, until `pca953x_resume` is eventually
> >>>> called, which restores the driver context and enables access to
> >>>> registers.

[...]

> >>> Applied, thanks!
> >>
> >> Won't this regress as it happens the last time [1]?
> >>
> >> [1]: https://lore.kernel.org/linux-gpio/CAMuHMdVnKX23yi7ir1LVxfXAMeeWMFzM+cdgSSTNjpn1OnC2xw@mail.gmail.com/
> >>
> > 
> > Ah, good catch. I'm wondering what the right fix here is but don't
> > really have any ideas at the moment. Any hints are appreciated.
> > 
> > For now, I'm dropping it.
> > 
> > Bart
> 
> I’ve found another possible solution: disable the PCA953x IRQ in
> pca953x_suspend() and re-enable it in pca953x_resume().
> This would prevent the ISR from being triggered while the regmap is in
> cache-only mode.
> The wake-up capability is preserved, since an IRQ can still wake the system
> even when disabled with disable_irq(), as long as it has wake enabled.

Can you enable IRQ debugfs and dump the state of the wake* nodes for the
respective interrupts? In this case we will be 100% sure it works as expected.

> This should avoid introducing regressions and still handle Geert’s use case
> properly.
> 
> Andy, Bart, Geert - what do you think?

Sounds okay, but please double check the above.

-- 
With Best Regards,
Andy Shevchenko



  reply	other threads:[~2025-04-07 15:40 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-03-26 17:38 [PATCH v1] gpio: pca953x: fix IRQ storm on system wake up Francesco Dolcini
2025-04-03 12:07 ` Bartosz Golaszewski
2025-04-03 13:54   ` Andy Shevchenko
2025-04-03 13:56     ` Bartosz Golaszewski
2025-04-07 15:11       ` Emanuele Ghidoli
2025-04-07 15:40         ` Andy Shevchenko [this message]
2025-04-13 13:33           ` Emanuele Ghidoli

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=Z_Px_ajf96J_LlcD@smile.fi.intel.com \
    --to=andriy.shevchenko@intel.com \
    --cc=bartosz.golaszewski@linaro.org \
    --cc=brgl@bgdev.pl \
    --cc=emanuele.ghidoli@toradex.com \
    --cc=francesco.dolcini@toradex.com \
    --cc=francesco@dolcini.it \
    --cc=geert@linux-m68k.org \
    --cc=ghidoliemanuele@gmail.com \
    --cc=linus.walleij@linaro.org \
    --cc=linux-gpio@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=marek.vasut@gmail.com \
    --cc=stable@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.