public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Imre Deak <imre.deak@intel.com>
To: Jean Delvare <khali@linux-fr.org>
Cc: linux-kernel@vger.kernel.org,
	Andrew Morton <akpm@linux-foundation.org>,
	Daniel Vetter <daniel.vetter@ffwll.ch>,
	Guenter Roeck <linux@roeck-us.net>,
	lm-sensors@lm-sensors.org
Subject: Re: [PATCH 04/11] hwmon/lm63,lm90: take msecs_to_jiffies_min into use
Date: Mon, 13 May 2013 14:56:33 +0300	[thread overview]
Message-ID: <1368446193.16445.88.camel@intelbox> (raw)
In-Reply-To: <20130513094700.7d134abc@endymion.delvare>

On Mon, 2013-05-13 at 09:47 +0200, Jean Delvare wrote:
> Hi Imre,
> 
> On Fri, 10 May 2013 15:13:22 +0300, Imre Deak wrote:
> > Use msecs_to_jiffies_min instead of open-coding the same.
> > 
> > Signed-off-by: Imre Deak <imre.deak@intel.com>
> > ---
> >  drivers/hwmon/lm63.c |    2 +-
> >  drivers/hwmon/lm90.c |    2 +-
> >  2 files changed, 2 insertions(+), 2 deletions(-)
> > 
> > diff --git a/drivers/hwmon/lm63.c b/drivers/hwmon/lm63.c
> > index f644a2e..db44bcb 100644
> > --- a/drivers/hwmon/lm63.c
> > +++ b/drivers/hwmon/lm63.c
> > @@ -248,7 +248,7 @@ static struct lm63_data *lm63_update_device(struct device *dev)
> >  	mutex_lock(&data->update_lock);
> >  
> >  	next_update = data->last_updated
> > -	  + msecs_to_jiffies(data->update_interval) + 1;
> > +	  + msecs_to_jiffies_min(data->update_interval);
> >  
> >  	if (time_after(jiffies, next_update) || !data->valid) {
> >  		if (data->config & 0x04) { /* tachometer enabled  */
> > diff --git a/drivers/hwmon/lm90.c b/drivers/hwmon/lm90.c
> > index 8eeb141..314f9d3 100644
> > --- a/drivers/hwmon/lm90.c
> > +++ b/drivers/hwmon/lm90.c
> > @@ -471,7 +471,7 @@ static struct lm90_data *lm90_update_device(struct device *dev)
> >  	mutex_lock(&data->update_lock);
> >  
> >  	next_update = data->last_updated
> > -	  + msecs_to_jiffies(data->update_interval) + 1;
> > +	  + msecs_to_jiffies_min(data->update_interval);
> >  	if (time_after(jiffies, next_update) || !data->valid) {
> >  		u8 h, l;
> >  		u8 alarms;
> 
> I don't like this. The + 1 aren't there because msecs_to_jiffies() may
> return less than the required time, as you claim. I don't think this is
> the case (see the doubts expressed in my reply to patch 1/11.)
> 
> These + 1 are there because the chip may need exactly
> data->update_interval for the data sampling and the datasheet isn't
> completely clear about what would happen if the host polls for results
> at exactly the same frequency the chip is sampling.
> 
> Most likely it is just paranoia from me and the + 1 can be removed.
> Especially when time_after (as opposed to time_after_eq) already adds
> some margin - probably exactly what we need here. I have a few chips
> here I could test this on, BTW (ADM1032 and LM64.)

Yes I realize now that time_after() vs. time_after_eq() guarantees
already that we wait at least data->update_interval. Moreover +1 was
there to wait more than this, so clearly my change here was incorrect.

> And even if this was actually needed, then it is written the wrong way.
> We don't need one more jiffy, the SMBus slave doesn't even know what a
> jiffy is. We need an arbitrary additional amount of time, expressed in
> a standard time unit like ms. So
>   msecs_to_jiffies(data->update_interval + 1)
> would be the right way to write it.

Agreed, this describes the intention better.

> On top of that, your proposed change will make the resulting binary
> larger, the compilation longer,

True. This could be solved by turning the macros into uninlined
functions.

> the future code reviews harder,

Not sure what you mean by this. Having a properly named helper instead
of just writing +1 makes it more obvious what the intention was and
easier to spot places that are doing the wrong thing.

> and backporting these drivers harder.

This would be the case for places where the adjustment is already there
and we would just make this more explicit with the new helper. But for
places we actually fix in the current code backporting the fix would be
a benefit.

A was planning to send a patchset with the actual fixes after there is
some consensus that the approach is viable at all..

> Each of these points only by a very
> small fraction, of course, but for a benefit which is even smaller
> IMHO, if it even exists (which I doubt.)

I think there is a clear benefit.

> So I'm not going to apply this patch, sorry.

Ok, this particular change was done without enough thought and we should
drop it, but I hope you agree we need a generic solution for this
problem.

Thanks a lot for the review and thoughts,
Imre


  reply	other threads:[~2013-05-13 11:56 UTC|newest]

Thread overview: 46+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-05-10 12:13 [PATCH 01/11] time: add *_to_jiffies_min helpers to guarantee a minimum duration Imre Deak
2013-05-10 12:13 ` [PATCH 02/11] sched: msleep: take msecs_to_jiffies_min into use Imre Deak
2013-05-10 12:13 ` [PATCH 03/11] drm/i915: " Imre Deak
2013-05-10 12:13 ` [PATCH 04/11] hwmon/lm63,lm90: " Imre Deak
2013-05-12 23:55   ` Guenter Roeck
2013-05-13  7:47   ` Jean Delvare
2013-05-13 11:56     ` Imre Deak [this message]
2013-05-13 12:23       ` Jean Delvare
2013-05-10 12:13 ` [PATCH 05/11] media/si4713-i2c: take usecs_to_jiffies_min " Imre Deak
2013-05-10 12:13 ` [PATCH 06/11] net/bonding: take msecs_to_jiffies_min " Imre Deak
2013-05-10 13:58   ` Michal Kubecek
2013-05-10 21:19     ` Imre Deak
2013-05-10 12:13 ` [PATCH 07/11] net/peak_pcmcia: " Imre Deak
2013-05-15  9:12   ` Marc Kleine-Budde
2013-05-15 11:45     ` Marc Kleine-Budde
2013-05-10 12:13 ` [PATCH 08/11] usb/isp116x-hcd: " Imre Deak
2013-05-10 12:13 ` [PATCH 09/11] net/sunrpc: " Imre Deak
2013-05-10 12:13 ` [PATCH 10/11] net/tipc: " Imre Deak
2013-05-10 12:13 ` [PATCH 11/11] sound/oxygen_io: " Imre Deak
2013-05-13 14:00   ` Takashi Iwai
2013-05-13 14:24     ` Imre Deak
2013-05-13 14:35       ` Takashi Iwai
2013-05-13 14:30     ` Clemens Ladisch
2013-05-10 12:24 ` [PATCH 01/11] time: add *_to_jiffies_min helpers to guarantee a minimum duration Daniel Vetter
2013-05-10 13:49   ` Imre Deak
2013-05-13  7:29 ` Jean Delvare
2013-05-13 11:27   ` Imre Deak
2013-05-13 12:28     ` Jean Delvare
2013-05-13 13:07       ` Imre Deak
2013-05-13  8:17 ` Jean Delvare
2013-05-13 12:01   ` Imre Deak
2013-05-14 14:48 ` [PATCH v2 0/8] add *_to_jiffies_timeout " Imre Deak
2013-05-14 14:48 ` [PATCH v2 1/8] time: " Imre Deak
2013-05-15 15:26   ` Arnd Bergmann
2013-05-15 17:56     ` Imre Deak
2013-05-17 13:35       ` Arnd Bergmann
2013-05-17 15:14         ` Imre Deak
2013-05-14 14:48 ` [PATCH v2 2/8] sched: msleep: take msecs_to_jiffies_timeout into use Imre Deak
2013-05-14 14:48 ` [PATCH v2 3/8] drm/i915: " Imre Deak
2013-05-14 14:48 ` [PATCH v2 4/8] media/si4713-i2c: take usecs_to_jiffies_timeout " Imre Deak
2013-05-14 17:45   ` edubezval
2013-05-14 14:48 ` [PATCH v2 5/8] usb/isp116x-hcd: take msecs_to_jiffies_timeout " Imre Deak
2013-05-14 14:48 ` [PATCH v2 6/8] net/sunrpc: " Imre Deak
2013-05-14 14:48 ` [PATCH v2 7/8] net/tipc: " Imre Deak
2013-05-14 14:48 ` [PATCH v2 8/8] sound/oxygen_io: " Imre Deak
2013-05-14 14:50   ` Takashi Iwai

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=1368446193.16445.88.camel@intelbox \
    --to=imre.deak@intel.com \
    --cc=akpm@linux-foundation.org \
    --cc=daniel.vetter@ffwll.ch \
    --cc=khali@linux-fr.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux@roeck-us.net \
    --cc=lm-sensors@lm-sensors.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