From: Lee Jones <lee@kernel.org>
To: Marek Vasut <marex@nabladev.com>
Cc: linux-kernel@vger.kernel.org, stable@vger.kernel.org,
Pascal PAILLET-LME <p.paillet@st.com>,
Paul Cercueil <paul@crapouillou.net>,
Sean Nyekjaer <sean@geanix.com>,
kernel@dh-electronics.com
Subject: Re: [PATCH v2] mfd: stpmic1: Attempt system shutdown twice in case PMIC is confused
Date: Tue, 20 Jan 2026 17:18:53 +0000 [thread overview]
Message-ID: <20260120171853.GH1354723@google.com> (raw)
In-Reply-To: <20260115173943.85764-1-marex@nabladev.com>
On Thu, 15 Jan 2026, Marek Vasut wrote:
> Attempt to shut down again, in case the first attempt failed.
> The STPMIC1 might get confused and the first regmap_update_bits()
> returns with -ETIMEDOUT / -110 . If that or similar transient
> failure occurs, try to shut down again. If the second attempt
> fails, there is some bigger problem, report it to user.
>
> Cc: stable@vger.kernel.org
> Fixes: 6e9df38f359a ("mfd: stpmic1: Add PMIC poweroff via sys-off handler")
> Signed-off-by: Marek Vasut <marex@nabladev.com>
> ---
> Cc: Lee Jones <lee@kernel.org>
> Cc: Pascal PAILLET-LME <p.paillet@st.com>
> Cc: Paul Cercueil <paul@crapouillou.net>
> Cc: Sean Nyekjaer <sean@geanix.com>
> Cc: kernel@dh-electronics.com
> ---
> V2: - Use a retry loop
> - Cc stable
> ---
> drivers/mfd/stpmic1.c | 21 ++++++++++++++++++---
> 1 file changed, 18 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/mfd/stpmic1.c b/drivers/mfd/stpmic1.c
> index 081827bc05961..9caf2b8740829 100644
> --- a/drivers/mfd/stpmic1.c
> +++ b/drivers/mfd/stpmic1.c
> @@ -121,9 +121,24 @@ static const struct regmap_irq_chip stpmic1_regmap_irq_chip = {
> static int stpmic1_power_off(struct sys_off_data *data)
> {
> struct stpmic1 *ddata = data->cb_data;
> -
> - regmap_update_bits(ddata->regmap, MAIN_CR,
> - SOFTWARE_SWITCH_OFF, SOFTWARE_SWITCH_OFF);
> + int i, ret;
> +
> + for (i = 0; i < 2; i++) {
for (int retries = 0; retries < MAX_RETIRES; retries++)
> + ret = regmap_update_bits(ddata->regmap, MAIN_CR, SOFTWARE_SWITCH_OFF,
> + SOFTWARE_SWITCH_OFF);
> + if (!ret)
> + return NOTIFY_DONE;
> +
> + /*
> + * Attempt to shut down again, in case the first attempt failed.
> + * The STPMIC1 might get confused and the first regmap_update_bits()
> + * returns with -ETIMEDOUT / -110 . If that or similar transient
> + * failure occurs, try to shut down again. If the second attempt
> + * fails, there is some bigger problem, report it to user.
> + */
> + if (i)
> + dev_err(ddata->dev, "Failed to access PMIC I2C bus (%d)\n", ret);
Users aren't going to care if this works on the first or second attempt.
I would only issue the error once we've given up.
No return error in the fail case?
define NOTIFY_DONE 0x0000 /* Don't care */
Harsh!
> + }
>
> return NOTIFY_DONE;
> }
> --
> 2.51.0
>
--
Lee Jones [李琼斯]
next prev parent reply other threads:[~2026-01-20 17:18 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-01-15 17:39 [PATCH v2] mfd: stpmic1: Attempt system shutdown twice in case PMIC is confused Marek Vasut
2026-01-20 17:18 ` Lee Jones [this message]
2026-01-22 11:11 ` Marek Vasut
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=20260120171853.GH1354723@google.com \
--to=lee@kernel.org \
--cc=kernel@dh-electronics.com \
--cc=linux-kernel@vger.kernel.org \
--cc=marex@nabladev.com \
--cc=p.paillet@st.com \
--cc=paul@crapouillou.net \
--cc=sean@geanix.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.