diff options
Diffstat (limited to 'drivers/cpufreq/cppc_cpufreq.c')
| -rw-r--r-- | drivers/cpufreq/cppc_cpufreq.c | 11 | 
1 files changed, 6 insertions, 5 deletions
diff --git a/drivers/cpufreq/cppc_cpufreq.c b/drivers/cpufreq/cppc_cpufreq.c index 432dfb4e8027..022e3555407c 100644 --- a/drivers/cpufreq/cppc_cpufreq.c +++ b/drivers/cpufreq/cppc_cpufreq.c @@ -487,7 +487,8 @@ static unsigned int get_perf_level_count(struct cpufreq_policy *policy)  	cpu_data = policy->driver_data;  	perf_caps = &cpu_data->perf_caps;  	max_cap = arch_scale_cpu_capacity(cpu); -	min_cap = div_u64(max_cap * perf_caps->lowest_perf, perf_caps->highest_perf); +	min_cap = div_u64((u64)max_cap * perf_caps->lowest_perf, +			  perf_caps->highest_perf);  	if ((min_cap == 0) || (max_cap < min_cap))  		return 0;  	return 1 + max_cap / CPPC_EM_CAP_STEP - min_cap / CPPC_EM_CAP_STEP; @@ -519,10 +520,10 @@ static int cppc_get_cpu_power(struct device *cpu_dev,  	cpu_data = policy->driver_data;  	perf_caps = &cpu_data->perf_caps;  	max_cap = arch_scale_cpu_capacity(cpu_dev->id); -	min_cap = div_u64(max_cap * perf_caps->lowest_perf, -			perf_caps->highest_perf); - -	perf_step = CPPC_EM_CAP_STEP * perf_caps->highest_perf / max_cap; +	min_cap = div_u64((u64)max_cap * perf_caps->lowest_perf, +			  perf_caps->highest_perf); +	perf_step = div_u64((u64)CPPC_EM_CAP_STEP * perf_caps->highest_perf, +			    max_cap);  	min_step = min_cap / CPPC_EM_CAP_STEP;  	max_step = max_cap / CPPC_EM_CAP_STEP;  |