Please ignore all the patches that I've sent. They were sent out by mistake when I was testing my quilt patch bomb script. These were intended only for the -rt tree and I'll be sending the right ones later. It's only when I saw this reply that I realised that I've been spamming everyone :( Sincere Apologies -Dinakar On Tue, Oct 20, 2009 at 05:43:17PM +0200, Thomas Renninger wrote: > On Tuesday 20 October 2009 15:55:47 dino@xxxxxxxxxx wrote: > > Move some of the aperf/mperf code out from the cpufreq driver thingy > > so that other people can enjoy it too. > > > > Signed-off-by: Peter Zijlstra <a.p.zijlstra@xxxxxxxxx> > > Cc: H Peter Anvin <hpa@xxxxxxxxx> > > Cc: Ingo Molnar <mingo@xxxxxxx> > > Cc: Venkatesh Pallipadi <venkatesh.pallipadi@xxxxxxxxx> > > Cc: Yanmin <yanmin_zhang@xxxxxxxxxxxxxxx> > > Cc: Dave Jones <davej@xxxxxxxxxx> > > Cc: Len Brown <len.brown@xxxxxxxxx> > > Cc: Yinghai Lu <yhlu.kernel@xxxxxxxxx> > > Cc: cpufreq@xxxxxxxxxxxxxxx > > > > Backport to 2.6.31.4-rt14 > > Signed-off-by: Dinakar Guniguntala <dino@xxxxxxxxxx> > > > > --- > > arch/x86/include/asm/processor.h | 12 ++++++++ > > arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c | 41 > +++++++++-------------------- > > 2 files changed, 26 insertions(+), 27 deletions(-) > > > > Index: linux-2.6.31.4-rt14/arch/x86/include/asm/processor.h > > =================================================================== > > --- linux-2.6.31.4-rt14.orig/arch/x86/include/asm/processor.h > 2009-10-12 16:15:40.000000000 -0400 > > +++ linux-2.6.31.4-rt14/arch/x86/include/asm/processor.h 2009-10-16 > 09:15:40.000000000 -0400 > > @@ -1010,4 +1010,16 @@ > > extern int get_tsc_mode(unsigned long adr); > > extern int set_tsc_mode(unsigned int val); > > > > +struct aperfmperf { > > + u64 aperf, mperf; > > +}; > > + > > +static inline void get_aperfmperf(struct aperfmperf *am) > > +{ > > + WARN_ON_ONCE(!boot_cpu_has(X86_FEATURE_APERFMPERF)); > > + > > + rdmsrl(MSR_IA32_APERF, am->aperf); > > + rdmsrl(MSR_IA32_MPERF, am->mperf); > > +} > > + > > #endif /* _ASM_X86_PROCESSOR_H */ > > Index: linux-2.6.31.4-rt14/arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c > > =================================================================== > > --- linux-2.6.31.4-rt14.orig/arch/x86/kernel/cpu/cpufreq/acpi- > cpufreq.c 2009-10-16 09:15:39.000000000 -0400 > > +++ linux-2.6.31.4-rt14/arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c > 2009-10-16 09:15:40.000000000 -0400 > > @@ -243,23 +243,12 @@ > > return cmd.val; > > } > > > > -struct perf_pair { > > - union { > > - struct { > > - u32 lo; > > - u32 hi; > > - } split; > > - u64 whole; > > - } aperf, mperf; > > -}; > > - > > /* Called via smp_call_function_single(), on the target CPU */ > > static void read_measured_perf_ctrs(void *_cur) > > { > > - struct perf_pair *cur = _cur; > > + struct aperfmperf *am = _cur; > > > > - rdmsr(MSR_IA32_APERF, cur->aperf.split.lo, cur->aperf.split.hi); > > - rdmsr(MSR_IA32_MPERF, cur->mperf.split.lo, cur->mperf.split.hi); > > + get_aperfmperf(am); > > } > > > > /* > > @@ -278,19 +267,17 @@ > > static unsigned int get_measured_perf(struct cpufreq_policy *policy, > > unsigned int cpu) > > { > > - struct perf_pair readin, cur; > > + struct aperfmperf readin, cur; > > unsigned int perf_percent; > > unsigned int retval; > > > > if (smp_call_function_single(cpu, read_measured_perf_ctrs, &readin, > 1)) > > return 0; > > > > - cur.aperf.whole = readin.aperf.whole - > > - per_cpu(msr_data, cpu).saved_aperf; > > - cur.mperf.whole = readin.mperf.whole - > > - per_cpu(msr_data, cpu).saved_mperf; > > - per_cpu(msr_data, cpu).saved_aperf = readin.aperf.whole; > > - per_cpu(msr_data, cpu).saved_mperf = readin.mperf.whole; > > + cur.aperf = readin.aperf - per_cpu(msr_data, cpu).saved_aperf; > > + cur.mperf = readin.mperf - per_cpu(msr_data, cpu).saved_mperf; > > + per_cpu(msr_data, cpu).saved_aperf = readin.aperf; > > + per_cpu(msr_data, cpu).saved_mperf = readin.mperf; > > > > #ifdef __i386__ > > /* > > @@ -305,8 +292,8 @@ > > h = max_t(u32, cur.aperf.split.hi, cur.mperf.split.hi); > Again, this will not compile on i386... > > > Thomas -- To unsubscribe from this list: send the line "unsubscribe cpufreq" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html