Message ID | 2582369.lNhAMrrx8s@vostro.rjw.lan (mailing list archive) |
---|---|
State | Superseded, archived |
Headers | show |
On 10/16/2013 05:53 AM, Rafael J. Wysocki wrote: > From: Rafael J. Wysocki <rafael.j.wysocki@intel.com> > > The expression in line 398 of intel_pstate.c causes the following > warning to be emitted: > > drivers/cpufreq/intel_pstate.c:398:3: warning: left shift count >= width of type > > which happens because unsigned long is 32-bit on some architectures. > Fix that by using a helper u64 variable and simplify the code > slightly. > > Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com> > --- > drivers/cpufreq/intel_pstate.c | 7 ++++--- > 1 file changed, 4 insertions(+), 3 deletions(-) > > Index: linux-pm/drivers/cpufreq/intel_pstate.c > =================================================================== > --- linux-pm.orig/drivers/cpufreq/intel_pstate.c > +++ linux-pm/drivers/cpufreq/intel_pstate.c > @@ -383,6 +383,7 @@ static void intel_pstate_get_min_max(str > static void intel_pstate_set_pstate(struct cpudata *cpu, int pstate) > { > int max_perf, min_perf; > + u64 val; > > intel_pstate_get_min_max(cpu, &min_perf, &max_perf); > > @@ -394,11 +395,11 @@ static void intel_pstate_set_pstate(stru > trace_cpu_frequency(pstate * 100000, cpu->cpu); > > cpu->pstate.current_pstate = pstate; > + val = pstate << 8; > if (limits.no_turbo) > - wrmsrl(MSR_IA32_PERF_CTL, BIT(32) | (pstate << 8)); > - else > - wrmsrl(MSR_IA32_PERF_CTL, pstate << 8); > + val |= (u64)1 << 32; > > + wrmsrl(MSR_IA32_PERF_CTL, val); > } > > static inline void intel_pstate_pstate_increase(struct cpudata *cpu, int steps) > > Tested with this change. Thanks, Srinivas -- To unsubscribe from this list: send the line "unsubscribe linux-pm" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Wednesday, October 16, 2013 10:24:46 AM Srinivas Pandruvada wrote: > On 10/16/2013 05:53 AM, Rafael J. Wysocki wrote: > > From: Rafael J. Wysocki <rafael.j.wysocki@intel.com> > > > > The expression in line 398 of intel_pstate.c causes the following > > warning to be emitted: > > > > drivers/cpufreq/intel_pstate.c:398:3: warning: left shift count >= width of type > > > > which happens because unsigned long is 32-bit on some architectures. > > Fix that by using a helper u64 variable and simplify the code > > slightly. > > > > Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com> > > --- > > drivers/cpufreq/intel_pstate.c | 7 ++++--- > > 1 file changed, 4 insertions(+), 3 deletions(-) > > > > Index: linux-pm/drivers/cpufreq/intel_pstate.c > > =================================================================== > > --- linux-pm.orig/drivers/cpufreq/intel_pstate.c > > +++ linux-pm/drivers/cpufreq/intel_pstate.c > > @@ -383,6 +383,7 @@ static void intel_pstate_get_min_max(str > > static void intel_pstate_set_pstate(struct cpudata *cpu, int pstate) > > { > > int max_perf, min_perf; > > + u64 val; > > > > intel_pstate_get_min_max(cpu, &min_perf, &max_perf); > > > > @@ -394,11 +395,11 @@ static void intel_pstate_set_pstate(stru > > trace_cpu_frequency(pstate * 100000, cpu->cpu); > > > > cpu->pstate.current_pstate = pstate; > > + val = pstate << 8; > > if (limits.no_turbo) > > - wrmsrl(MSR_IA32_PERF_CTL, BIT(32) | (pstate << 8)); > > - else > > - wrmsrl(MSR_IA32_PERF_CTL, pstate << 8); > > + val |= (u64)1 << 32; > > > > + wrmsrl(MSR_IA32_PERF_CTL, val); > > } > > > > static inline void intel_pstate_pstate_increase(struct cpudata *cpu, int steps) > > > > > Tested with this change. Cool, thanks!
Index: linux-pm/drivers/cpufreq/intel_pstate.c =================================================================== --- linux-pm.orig/drivers/cpufreq/intel_pstate.c +++ linux-pm/drivers/cpufreq/intel_pstate.c @@ -383,6 +383,7 @@ static void intel_pstate_get_min_max(str static void intel_pstate_set_pstate(struct cpudata *cpu, int pstate) { int max_perf, min_perf; + u64 val; intel_pstate_get_min_max(cpu, &min_perf, &max_perf); @@ -394,11 +395,11 @@ static void intel_pstate_set_pstate(stru trace_cpu_frequency(pstate * 100000, cpu->cpu); cpu->pstate.current_pstate = pstate; + val = pstate << 8; if (limits.no_turbo) - wrmsrl(MSR_IA32_PERF_CTL, BIT(32) | (pstate << 8)); - else - wrmsrl(MSR_IA32_PERF_CTL, pstate << 8); + val |= (u64)1 << 32; + wrmsrl(MSR_IA32_PERF_CTL, val); } static inline void intel_pstate_pstate_increase(struct cpudata *cpu, int steps)