linux-pm.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
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

  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).