From: Sicelo <absicsz@gmail.com>
To: linux-pm@vger.kernel.org, "Krzysztof Kozlowski" <krzk@kernel.org>,
"Pali Rohár" <pali@kernel.org>
Cc: linux-pm@vger.kernel.org, sre@kernel.org,
linux-kernel@vger.kernel.org, maemo-leste@lists.dyne.org
Subject: Re: [PATCH] power: supply: bq27xxx_battery: do not update cached flags prematurely
Date: Wed, 8 Jan 2025 10:35:28 +0200 [thread overview]
Message-ID: <Z3440OtztmLUv7HA@tp440p.steeds.sam> (raw)
In-Reply-To: <20241125175957.rulndmny536pd5c6@pali>
Hi
On Mon, Nov 25, 2024 at 06:59:57PM +0100, Pali Rohár wrote:
> cc Krzysztof, author of the mentioned commit.
Yes, apologies for overlooking to cc him.
> On Monday 25 November 2024 17:29:30 Sicelo A. Mhlongo wrote:
> > Commit 243f8ffc883a1 ("power: supply: bq27xxx_battery: Notify also about
> > status changes") intended to notify userspace when the status changes,
> > based on the flags register. However, the cached state is updated too
> > early, before the flags are tested for any changes. Remove the premature
> > update.
> >
> > Fixes: 243f8ffc883a1 ("power: supply: bq27xxx_battery: Notify also about status changes")
> > Signed-off-by: Sicelo A. Mhlongo <absicsz@gmail.com>
> > ---
> > drivers/power/supply/bq27xxx_battery.c | 1 -
> > 1 file changed, 1 deletion(-)
> >
> > diff --git a/drivers/power/supply/bq27xxx_battery.c b/drivers/power/supply/bq27xxx_battery.c
> > index 40c5ac7a1118..b2c65fe43d5c 100644
> > --- a/drivers/power/supply/bq27xxx_battery.c
> > +++ b/drivers/power/supply/bq27xxx_battery.c
> > @@ -1913,7 +1913,6 @@ static void bq27xxx_battery_update_unlocked(struct bq27xxx_device_info *di)
> > cache.flags = -1; /* read error */
> > if (cache.flags >= 0) {
> > cache.capacity = bq27xxx_battery_read_soc(di);
> > - di->cache.flags = cache.flags;
> >
> > /*
> > * On gauges with signed current reporting the current must be
> > --
> > 2.45.2
Is there anything that still needs to be done to move this patch along?
Perhaps for clarification, in the middle of bq27xxx_battery_update_unlocked,
there is:
if ((di->cache.capacity != cache.capacity) ||
(di->cache.flags != cache.flags) ||
(di->last_status.intval != status.intval)) {
di->last_status.intval = status.intval;
power_supply_changed(di->bat);
}
if (memcmp(&di->cache, &cache, sizeof(cache)) != 0)
di->cache = cache;
which compares the new value of cache.flags with the previously cached
values in di->cache, and calls power_supply_changed() if they are
different. For the flags, this test is currently not working, because by
the time it is run, di->cache.flags has already been updated with the
value in cache.flags, so the flags condition is always short-circuited
in the test. Hence my patch ensures di->cache.flags is not updated
before the test.
The flags are correctly updated after the test, in the
di->cache = cache;
line, so the removed line is simply not needed.
If there is any adjustment necessary, I will happily do so.
Kind Regards
Sicelo A. Mhlongo
next prev parent reply other threads:[~2025-01-08 8:35 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-11-25 15:29 [PATCH] power: supply: bq27xxx_battery: do not update cached flags prematurely Sicelo A. Mhlongo
2024-11-25 17:59 ` Pali Rohár
2025-01-08 8:35 ` Sicelo [this message]
2025-02-21 1:21 ` Sebastian Reichel
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=Z3440OtztmLUv7HA@tp440p.steeds.sam \
--to=absicsz@gmail.com \
--cc=krzk@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=maemo-leste@lists.dyne.org \
--cc=pali@kernel.org \
--cc=sre@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).