From: Guenter Roeck <linux@roeck-us.net>
To: Tinsae Tadesse <tinsaetadesse2015@gmail.com>
Cc: linux-hwmon@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH 2/3] hwmon: spd5118: Retry temperature reads after temporary I2C errors
Date: Mon, 12 Jan 2026 08:35:31 -0800 [thread overview]
Message-ID: <01af44b5-8a07-4ebc-b58b-13672b545c8b@roeck-us.net> (raw)
In-Reply-To: <20260110172003.13969-2-tinsaetadesse2015@gmail.com>
On 1/10/26 09:19, Tinsae Tadesse wrote:
> After suspend/resume, the SPD5118 hub or the underlying I2C adapter
> may not be immediately available, causing register reads to fail.
>
> Attempt a single regcache re-synchronization and retry the read to
> allow recovery.
>
> Signed-off-by: Tinsae Tadesse <tinsaetadesse2015@gmail.com>
> ---
> drivers/hwmon/spd5118.c | 11 ++++++++++-
> 1 file changed, 10 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/hwmon/spd5118.c b/drivers/hwmon/spd5118.c
> index ec9f14f6e0df..63f798991363 100644
> --- a/drivers/hwmon/spd5118.c
> +++ b/drivers/hwmon/spd5118.c
> @@ -101,6 +101,7 @@ static int spd5118_read_temp(struct regmap *regmap, u32 attr, long *val)
> int reg, err;
> u8 regval[2];
> u16 temp;
> + bool retried = false;
>
> switch (attr) {
> case hwmon_temp_input:
> @@ -122,9 +123,17 @@ static int spd5118_read_temp(struct regmap *regmap, u32 attr, long *val)
> return -EOPNOTSUPP;
> }
>
> +retry:
> err = regmap_bulk_read(regmap, reg, regval, 2);
> - if (err)
> + if (err) {
> + if (!retried && (err == -ENXIO || err == -EIO)) {
> + retried = true;
> + regcache_mark_dirty(regmap);
> + if (!regcache_sync(regmap))
> + goto retry;
> + }
> return err;
> + }
>
> temp = (regval[1] << 8) | regval[0];
>
Wrong solution. This affects all accesses, not just the first access after
resume. regmap_bulk_read() can fail for any reason, not just because the
system just returned from resume. The above code just assumes that the failure
is due to a bad resume based on the returned error code. That may be the case
for the i801 controller driver, but even that would be just by chance.
Guenter
next prev parent reply other threads:[~2026-01-12 16:35 UTC|newest]
Thread overview: 45+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-01-10 17:19 [PATCH 1/3] hwmon: spd5118: Do not fail resume on " Tinsae Tadesse
2026-01-10 17:19 ` [PATCH 2/3] hwmon: spd5118: Retry temperature reads after " Tinsae Tadesse
2026-01-12 16:35 ` Guenter Roeck [this message]
2026-01-10 17:19 ` [PATCH 3/3] hwmon: spd5118: Avoid hardware access during suspend and resume Tinsae Tadesse
2026-01-12 14:42 ` Guenter Roeck
2026-01-10 22:27 ` [PATCH 1/3] hwmon: spd5118: Do not fail resume on temporary I2C errors Armin Wolf
2026-01-12 11:48 ` TINSAE TADESSE
2026-01-12 17:41 ` Armin Wolf
2026-01-12 18:07 ` Guenter Roeck
2026-01-12 14:37 ` TINSAE TADESSE
2026-01-12 16:36 ` Guenter Roeck
2026-01-12 17:46 ` Armin Wolf
2026-01-12 18:17 ` Guenter Roeck
2026-01-12 18:22 ` Armin Wolf
2026-01-12 19:11 ` Guenter Roeck
2026-01-13 19:33 ` TINSAE TADESSE
2026-01-13 19:16 ` TINSAE TADESSE
2026-01-13 23:58 ` Armin Wolf
2026-01-12 16:30 ` Guenter Roeck
2026-01-13 19:15 ` TINSAE TADESSE
2026-01-13 23:46 ` Guenter Roeck
[not found] ` <CAJ12PfP+Dbxd5fFAx-zAaJQ0B53Z1nXAiPbkmivk6smKajf1=Q@mail.gmail.com>
2026-01-14 14:23 ` Guenter Roeck
2026-01-15 13:50 ` TINSAE TADESSE
2026-01-16 6:24 ` Guenter Roeck
2026-01-24 14:45 ` TINSAE TADESSE
2026-01-24 19:11 ` Armin Wolf
2026-01-25 22:36 ` Guenter Roeck
2026-01-26 9:40 ` Armin Wolf
2026-01-26 15:20 ` Guenter Roeck
2026-01-27 10:35 ` TINSAE TADESSE
2026-01-27 14:33 ` Guenter Roeck
2026-01-27 19:23 ` TINSAE TADESSE
2026-01-27 23:41 ` Guenter Roeck
2026-01-31 0:55 ` Kurt Borja
2026-01-31 1:21 ` Guenter Roeck
2026-01-31 1:54 ` Kurt Borja
2026-01-31 2:06 ` Guenter Roeck
2026-01-31 9:22 ` Armin Wolf
2026-01-31 11:26 ` TINSAE TADESSE
2026-01-31 19:50 ` TINSAE TADESSE
2026-02-01 1:25 ` Guenter Roeck
2026-02-01 7:30 ` TINSAE TADESSE
2026-02-01 15:21 ` Guenter Roeck
2026-02-02 7:03 ` TINSAE TADESSE
2026-01-27 10:30 ` TINSAE TADESSE
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=01af44b5-8a07-4ebc-b58b-13672b545c8b@roeck-us.net \
--to=linux@roeck-us.net \
--cc=linux-hwmon@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=tinsaetadesse2015@gmail.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®