All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Li, Aubrey" <aubrey.li@linux.intel.com>
To: dirk.brandewie@gmail.com, linux-pm@vger.kernel.org, rjw@rjwysocki.net
Cc: linux-kernel@vger.kernel.org,
	Dirk Brandewie <dirk.j.brandewie@intel.com>
Subject: Re: [PATCH 2/5] intel_pstate: remove unneeded sample buffers
Date: Thu, 13 Feb 2014 08:42:10 +0800	[thread overview]
Message-ID: <52FC14E2.6070402@linux.intel.com> (raw)
In-Reply-To: <1392228067-14817-3-git-send-email-dirk.j.brandewie@intel.com>

On 2014/2/13 2:01, dirk.brandewie@gmail.com wrote:
> From: Dirk Brandewie <dirk.j.brandewie@intel.com>
> 
> Remove unneeded sample buffers, intel_pstate operates on the most
> recent sample only.  This save some memory and make the code more
> readable.
> 
> Signed-off-by: Dirk Brandewie <dirk.j.brandewie@intel.com>
> ---
>  drivers/cpufreq/intel_pstate.c | 25 ++++++++++++-------------
>  1 file changed, 12 insertions(+), 13 deletions(-)
> 
> diff --git a/drivers/cpufreq/intel_pstate.c b/drivers/cpufreq/intel_pstate.c
> index c788abf..d692b10 100644
> --- a/drivers/cpufreq/intel_pstate.c
> +++ b/drivers/cpufreq/intel_pstate.c
> @@ -96,8 +96,7 @@ struct cpudata {
>  	u64	prev_aperf;
>  	u64	prev_mperf;
>  	unsigned long long prev_tsc;
> -	int	sample_ptr;
> -	struct sample samples[SAMPLE_COUNT];
> +	struct sample sample;
>  };
>  
>  static struct cpudata **all_cpu_data;
> @@ -570,15 +569,15 @@ static inline void intel_pstate_sample(struct cpudata *cpu)
>  	rdmsrl(MSR_IA32_MPERF, mperf);
>  	tsc = native_read_tsc();

To be pikcy, just want the ratio more accurate, since aperf and mperf
are a pair, do you want to turn interrupt off to make sure nothing
occurs between reading aperf and mperf? and since native_read_tsc() is
called here, better to put into no interrupt context as well.

Thanks,
-Aubrey

>  
> -	cpu->sample_ptr = (cpu->sample_ptr + 1) % SAMPLE_COUNT;
> -	cpu->samples[cpu->sample_ptr].aperf = aperf;
> -	cpu->samples[cpu->sample_ptr].mperf = mperf;
> -	cpu->samples[cpu->sample_ptr].tsc = tsc;
> -	cpu->samples[cpu->sample_ptr].aperf -= cpu->prev_aperf;
> -	cpu->samples[cpu->sample_ptr].mperf -= cpu->prev_mperf;
> -	cpu->samples[cpu->sample_ptr].tsc -= cpu->prev_tsc;
>  
> -	intel_pstate_calc_busy(cpu, &cpu->samples[cpu->sample_ptr]);
> +	cpu->sample.aperf = aperf;
> +	cpu->sample.mperf = mperf;
> +	cpu->sample.tsc = tsc;
> +	cpu->sample.aperf -= cpu->prev_aperf;
> +	cpu->sample.mperf -= cpu->prev_mperf;
> +	cpu->sample.tsc -= cpu->prev_tsc;
> +
> +	intel_pstate_calc_busy(cpu, &cpu->sample);
>  
>  	cpu->prev_aperf = aperf;
>  	cpu->prev_mperf = mperf;
> @@ -598,7 +597,7 @@ static inline int32_t intel_pstate_get_scaled_busy(struct cpudata *cpu)
>  {
>  	int32_t core_busy, max_pstate, current_pstate;
>  
> -	core_busy = cpu->samples[cpu->sample_ptr].core_pct_busy;
> +	core_busy = cpu->sample.core_pct_busy;
>  	max_pstate = int_tofp(cpu->pstate.max_pstate);
>  	current_pstate = int_tofp(cpu->pstate.current_pstate);
>  	return mul_fp(core_busy, div_fp(max_pstate, current_pstate));
> @@ -631,7 +630,7 @@ static void intel_pstate_timer_func(unsigned long __data)
>  
>  	intel_pstate_sample(cpu);
>  
> -	sample = &cpu->samples[cpu->sample_ptr];
> +	sample = &cpu->sample;
>  
>  	intel_pstate_adjust_busy_pstate(cpu);
>  
> @@ -712,7 +711,7 @@ static unsigned int intel_pstate_get(unsigned int cpu_num)
>  	cpu = all_cpu_data[cpu_num];
>  	if (!cpu)
>  		return 0;
> -	sample = &cpu->samples[cpu->sample_ptr];
> +	sample = &cpu->sample;
>  	return sample->freq;
>  }
>  
> 

  reply	other threads:[~2014-02-13  0:42 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-02-12 18:01 [PATCH 0/5] intel_pstate updates for v3.14-rcX dirk.brandewie
2014-02-12 18:01 ` [PATCH 1/5] intel_pstate: Remove energy reporting from pstate_sample tracepoint dirk.brandewie
2014-02-12 18:01 ` [PATCH 2/5] intel_pstate: remove unneeded sample buffers dirk.brandewie
2014-02-13  0:42   ` Li, Aubrey [this message]
2014-02-12 18:01 ` [PATCH 3/5] intel_pstate: fix pid_reset to use fixed point values dirk.brandewie
2014-02-12 18:01 ` [PATCH 4/5] intel_pstate: Use LFM bus ratio as min ratio/P state dirk.brandewie
2014-02-19  0:58   ` Rafael J. Wysocki
2014-02-19 18:35     ` [PATCH v2] " dirk.brandewie
2014-02-20  0:44       ` Rafael J. Wysocki
2014-02-12 18:01 ` [PATCH 5/5] intel_pstate: Add support for Baytrail turbo P states dirk.brandewie
2014-02-13  0:47 ` [PATCH 0/5] intel_pstate updates for v3.14-rcX Rafael J. Wysocki
2014-02-13  1:00   ` Rafael J. Wysocki
2014-02-13  1:23     ` Rafael J. Wysocki
2014-02-18 20:29 ` Dirk Brandewie
2014-02-18 22:27   ` Rafael J. Wysocki
2014-02-18 23:53     ` Dirk Brandewie
2014-02-19  0:34       ` Rafael J. Wysocki
     [not found]         ` <CANOOhLToR8ajjiM1x7m_4Pbak3sUkjfq0h4EX6dz1U23D3X3EA@mail.gmail.com>
2014-02-19  0:43           ` Rafael J. Wysocki
2014-02-19  0:35             ` Dirk Brandewie
2014-02-19  0:53               ` Rafael J. Wysocki
2014-02-19 18:26                 ` Dirk Brandewie
2014-02-20  0:43                   ` Rafael J. Wysocki

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=52FC14E2.6070402@linux.intel.com \
    --to=aubrey.li@linux.intel.com \
    --cc=dirk.brandewie@gmail.com \
    --cc=dirk.j.brandewie@intel.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=rjw@rjwysocki.net \
    /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.