Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Unverified Commit 619a7b7b authored by Chris Redpath's avatar Chris Redpath Committed by Alex Naidis
Browse files

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: default avatarChris Redpath <chris.redpath@arm.com>
Signed-off-by: default avatarAlex Naidis <alex.naidis@linux.com>
parent f49d0bee
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -312,13 +312,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;