cpufreq: interactive governor drops bits in time calculation
Keep time calculation in 64-bit throughout. If we have long times between idle calculations this can result in deltas > 32 bits which causes incorrect load percentage calculations and selecting the wrong frequencies if we truncate here. Signed-off-by: Chris Redpath <chris.redpath@arm.com> Signed-off-by: Alex Naidis <alex.naidis@linux.com> Git-commit: 865c05d076acdc1e943b0e04f96721546a2e74ca Git-repo: https://android.googlesource.com/kernel/common.git Signed-off-by: Srinivasarao P <spathi@codeaurora.org>
This commit is contained in:
parent
a8485c865e
commit
d127423a30
|
@ -380,13 +380,13 @@ static u64 update_load(int cpu)
|
|||
pcpu->policy->governor_data;
|
||||
u64 now;
|
||||
u64 now_idle;
|
||||
unsigned int delta_idle;
|
||||
unsigned int delta_time;
|
||||
u64 delta_idle;
|
||||
u64 delta_time;
|
||||
u64 active_time;
|
||||
|
||||
now_idle = get_cpu_idle_time(cpu, &now, tunables->io_is_busy);
|
||||
delta_idle = (unsigned int)(now_idle - pcpu->time_in_idle);
|
||||
delta_time = (unsigned int)(now - pcpu->time_in_idle_timestamp);
|
||||
delta_idle = (now_idle - pcpu->time_in_idle);
|
||||
delta_time = (now - pcpu->time_in_idle_timestamp);
|
||||
|
||||
if (delta_time <= delta_idle)
|
||||
active_time = 0;
|
||||
|
|
Loading…
Reference in New Issue