linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Sebastian Reichel <sre@kernel.org>
To: "Tc, Jenny" <jenny.tc@intel.com>
Cc: "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>,
	Pavel Machek <pavel@ucw.cz>,
	Stephen Rothwell <sfr@canb.auug.org.au>,
	Anton Vorontsov <anton.vorontsov@linaro.org>,
	David Woodhouse <dwmw2@infradead.org>,
	David Cohen <david.a.cohen@linux.intel.com>,
	"Pallala, Ramakrishna" <ramakrishna.pallala@intel.com>
Subject: Re: [PATCH 3/4] power_supply: Introduce PSE compliant algorithm
Date: Thu, 17 Jul 2014 23:13:48 +0200	[thread overview]
Message-ID: <20140717211347.GD13832@earth.universe> (raw)
In-Reply-To: <20ADAB092842284E95860F279283C56422F9B99C@BGSMSX104.gar.corp.intel.com>

[-- Attachment #1: Type: text/plain, Size: 3268 bytes --]

On Fri, Jul 11, 2014 at 02:46:35AM +0000, Tc, Jenny wrote:
> > From: Sebastian Reichel [mailto:sre@kernel.org]
> > Sent: Tuesday, July 08, 2014 9:26 PM
> > To: Tc, Jenny
> > Cc: linux-kernel@vger.kernel.org; Dmitry Eremin-Solenikov; Pavel Machek; Stephen
> > Rothwell; Anton Vorontsov; David Woodhouse; David Cohen; Pallala, Ramakrishna
> > Subject: Re: [PATCH 3/4] power_supply: Introduce PSE compliant algorithm
> > 
> > On Tue, Jul 08, 2014 at 06:07:29AM +0000, Tc, Jenny wrote:
> > > > > +static int get_tempzone(struct psy_pse_chrg_prof *pse_mod_bprof,
> > > > > +		int temp)
> > > > > +{
> > > > > +	int i = 0;
> > > > > +	int temp_range_cnt;
> > > > > +
> > > > > +	temp_range_cnt =  min_t(u16, pse_mod_bprof->temp_mon_ranges,
> > > > > +					BATT_TEMP_NR_RNG);
> > > > > +	if ((temp < pse_mod_bprof->temp_low_lim) ||
> > > > > +		(temp > pse_mod_bprof->temp_mon_range[0].temp_up_lim))
> > > > > +		return -EINVAL;
> > > > > +
> > > > > +	for (i = 0; i < temp_range_cnt; ++i)
> > > > > +		if (temp > pse_mod_bprof->temp_mon_range[i].temp_up_lim)
> > > > > +			break;
> > > > > +	return i-1;
> > > > > +}
> > > >
> > > > pse_mod_bprof->temp_mon_ranges > BATT_TEMP_NR_RNG is not allowed, so
> > > > I suggest to print an error and return some error code.
> > > >
> > > min_t takes care of the upper bound. The algorithm process
> > > BATT_TEMP_NR_RNG even if the actual number of zones are greater than this.
> > 
> > Right, the function will not fail, but the zone information table is truncated. I would
> > expect at least warning about that. I think it doesn't hurt to have a small function,
> > which validates the zone data as good as possible. Using incorrect temperature
> > zones is a safety thread and we should try our best to avoid exploding batteries ;)
> > 
> > Maybe something like that:
> > 
> > static bool check_tempzones(struct psy_pse_chrg_prof *pse_mod_bprof) {
> >     int i = 0;
> >     int last_temp = ;
> > 
> >     /* check size */
> >     if (BATT_TEMP_NR_RNG > pse_mod_bprof->temp_mon_ranges)
> >         return false;
> 
> This is in a way good to have, OK to implement the same.
> 
> But KO with below suggestion. This doesn't guarantee safety. IMHO
> Safety is 1/0 - SAFE or NOT SAFE. No half safety.

We won't be able to handle every possible case, but we can try our
best to avoid problems. One (possibly useless) safety check too much
is better than one missing check.

> To ensure complete safety, measures should be taken at the entry
> point- where data is read from external source. Since the
> algorithm gets the data from internal kernel component
> (power_supply_charger.c), it trust the data. Since the data is
> originated from battery identification driver, the safety should
> be ensured at that level.

I think some basic checks of kernel's platform data help to avoid
potential problems during development phase.

> >     /* check zone order */
> >     for (i = 0; i < pse_mod_bprof->temp_mon_ranges; i++) {
> >         if (last_temp < pse_mod_bprof->temp_mon_range[i].temp_up_lim)
> >             return false;
> >         last_temp = pse_mod_bprof->temp_mon_range[i].temp_up_lim;
> >     }
> > 
> >     return true;
> > }

-- Sebastian

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 819 bytes --]

  reply	other threads:[~2014-07-17 21:13 UTC|newest]

Thread overview: 33+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-06-30  9:55 [PATCHv10 0/4] power_supply: Introduce power supply charging driver Jenny TC
2014-06-30  9:55 ` [PATCH 1/4] power_supply: Add inlmt,iterm, min/max temp props Jenny TC
2014-07-03 13:05   ` Sebastian Reichel
2014-06-30  9:55 ` [PATCH 2/4] power_supply: Introduce generic psy charging driver Jenny TC
2014-06-30  9:55 ` [PATCH 3/4] power_supply: Introduce PSE compliant algorithm Jenny TC
2014-07-03 14:56   ` Sebastian Reichel
2014-07-08  6:07     ` Tc, Jenny
2014-07-08 15:56       ` Sebastian Reichel
2014-07-11  2:46         ` Tc, Jenny
2014-07-17 21:13           ` Sebastian Reichel [this message]
2014-06-30  9:55 ` [PATCH 4/4] power_supply: bq24261 charger driver Jenny TC
2014-07-03 15:25   ` Sebastian Reichel
  -- strict thread matches above, loose matches on Subject: below --
2014-07-08  6:04 [PATCHv11 0/4] power_supply: Introduce power supply charging driver Jenny TC
2014-07-08  6:04 ` [PATCH 3/4] power_supply: Introduce PSE compliant algorithm Jenny TC
2014-06-19 14:02 [PATCHv9 0/4] power_supply: Introduce power supply charging driver Jenny TC
2014-06-19 14:02 ` [PATCH 3/4] power_supply: Introduce PSE compliant algorithm Jenny TC
2014-02-20  5:53 [PATCH v6 0/4] power_supply: Introduce power supply charging driver Jenny TC
2014-02-20  5:53 ` [PATCH 3/4] power_supply: Introduce PSE compliant algorithm Jenny TC
2014-02-04  5:12 [PATCH v5 0/4] power_supply: Introduce power supply charging driver Jenny TC
2014-02-04  5:12 ` [PATCH 3/4] power_supply: Introduce PSE compliant algorithm Jenny TC
2014-02-04 11:36   ` Pavel Machek
2014-02-20  5:16     ` Jenny Tc
2014-02-21 14:45       ` Pavel Machek
2014-02-26  2:54         ` Jenny Tc
2014-02-27 19:47           ` Linus Walleij
2014-02-28  2:52             ` Jenny Tc
2014-02-27 20:46           ` Pavel Machek
2014-02-27 20:18   ` Linus Walleij
2014-02-28  3:07     ` Jenny Tc
2014-02-28 10:08       ` Pavel Machek
2014-03-03  3:11         ` Jenny Tc
2014-03-03 10:42           ` Pavel Machek
2014-03-07  3:34       ` Linus Walleij
2014-03-07  3:43         ` Jenny Tc
2014-01-30 17:30 [PATCH v4 0/4] power_supply: Introduce power supply charging driver Jenny TC
2014-01-30 17:30 ` [PATCH 3/4] power_supply: Introduce PSE compliant algorithm Jenny TC
2014-01-22 17:19 [PATCH v3 0/4] power_supply: Introduce power supply charging driver Jenny TC
2014-01-22 17:19 ` [PATCH 3/4] power_supply: Introduce PSE compliant algorithm Jenny TC
2014-01-25 22:29   ` Pavel Machek

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=20140717211347.GD13832@earth.universe \
    --to=sre@kernel.org \
    --cc=anton.vorontsov@linaro.org \
    --cc=david.a.cohen@linux.intel.com \
    --cc=dbaryshkov@gmail.com \
    --cc=dwmw2@infradead.org \
    --cc=jenny.tc@intel.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=pavel@ucw.cz \
    --cc=ramakrishna.pallala@intel.com \
    --cc=sfr@canb.auug.org.au \
    /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).