All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
To: Frederic Weisbecker <fweisbec@gmail.com>
Cc: "Rafael J. Wysocki" <rjw@sisk.pl>,
	Viresh Kumar <viresh.kumar@linaro.org>,
	LKML <linux-kernel@vger.kernel.org>,
	Carsten Emde <C.Emde@osadl.org>,
	Thomas Gleixner <tglx@linutronix.de>,
	Clark Williams <williams@redhat.com>,
	Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Subject: Re: [PATCH] cpufreq: Fix wrong time unit conversion
Date: Sat, 7 Sep 2013 12:02:26 -0700	[thread overview]
Message-ID: <20130907190226.GI3966@linux.vnet.ibm.com> (raw)
In-Reply-To: <1378571708-27825-1-git-send-email-fweisbec@gmail.com>

On Sat, Sep 07, 2013 at 06:35:08PM +0200, Frederic Weisbecker wrote:
> The time spent by a CPU under a given frequency is stored in jiffies unit
> in the cpu var cpufreq_stats_table->time_in_state[i], i being the index of
> the frequency.
> 
> This is what is displayed in the following file on the right column:
> 
>      cat /sys/devices/system/cpu/cpuX/cpufreq/stats/time_in_state
>      2301000 19835820
>      2300000 3172
>      [...]
> 
> Now cpufreq converts this jiffies unit delta to clock_t before returning it
> to the user as in the above file. And that conversion is achieved using the API
> cputime64_to_clock_t().
> 
> Although it accidentally works on traditional tick based cputime accounting, where
> cputime_t maps directly to jiffies, it doesn't work with other types of cputime
> accounting such as CONFIG_VIRT_CPU_ACCOUNTING_* where cputime_t can map to nsecs
> or any granularity preffered by the architecture.
> 
> For example we get a buggy zero delta on full dyntick configurations:
> 
>      cat /sys/devices/system/cpu/cpuX/cpufreq/stats/time_in_state
>      2301000 0
>      2300000 0
>      [...]
> 
> Fix this with using the proper jiffies_64_t to clock_t conversion.
> 
> Reported-by: Carsten Emde <C.Emde@osadl.org>
> Tested-by: Carsten Emde <C.Emde@osadl.org>
> Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>
> Cc: Carsten Emde <C.Emde@osadl.org>
> Cc: Thomas Gleixner <tglx@linutronix.de>
> Cc: Clark Williams <williams@redhat.com>
> Cc: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
> Cc: Paul E. McKenney <paulmck@linux.vnet.ibm.com>

Good catch!

Acked-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>

> ---
>  drivers/cpufreq/cpufreq_stats.c |    2 +-
>  1 files changed, 1 insertions(+), 1 deletions(-)
> 
> diff --git a/drivers/cpufreq/cpufreq_stats.c b/drivers/cpufreq/cpufreq_stats.c
> index d37568c..10e6138 100644
> --- a/drivers/cpufreq/cpufreq_stats.c
> +++ b/drivers/cpufreq/cpufreq_stats.c
> @@ -81,7 +81,7 @@ static ssize_t show_time_in_state(struct cpufreq_policy *policy, char *buf)
>  	for (i = 0; i < stat->state_num; i++) {
>  		len += sprintf(buf + len, "%u %llu\n", stat->freq_table[i],
>  			(unsigned long long)
> -			cputime64_to_clock_t(stat->time_in_state[i]));
> +			jiffies_64_to_clock_t(stat->time_in_state[i]));
>  	}
>  	return len;
>  }
> -- 
> 1.7.5.4
> 


  reply	other threads:[~2013-09-07 19:02 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-09-07 16:35 [PATCH] cpufreq: Fix wrong time unit conversion Frederic Weisbecker
2013-09-07 19:02 ` Paul E. McKenney [this message]
2013-09-07 21:55   ` Rafael J. Wysocki
2013-09-07 19:59 ` Andreas Schwab
2013-09-08  1:57   ` Paul E. McKenney
2013-09-08 10:25   ` Frederic Weisbecker
2013-09-08 11:49     ` Rafael J. Wysocki
2013-09-08 11:53       ` Rafael J. Wysocki
2013-09-08 12:09         ` Frederic Weisbecker

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=20130907190226.GI3966@linux.vnet.ibm.com \
    --to=paulmck@linux.vnet.ibm.com \
    --cc=C.Emde@osadl.org \
    --cc=bigeasy@linutronix.de \
    --cc=fweisbec@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=rjw@sisk.pl \
    --cc=tglx@linutronix.de \
    --cc=viresh.kumar@linaro.org \
    --cc=williams@redhat.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.