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

Commit 54c9a35d authored by Pallipadi, Venkatesh's avatar Pallipadi, Venkatesh Committed by Dave Jones
Browse files

[CPUFREQ] Resolve time unit thinko in ondemand/conservative govs

ondemand and conservative governors are messing up time units in the
code path where NO_HZ is not enabled and ignore_nice is set. The walltime
idletime stored is in jiffies and nice time calculation is happening in
microseconds.

The problem was reported and diagnosed by Alexander here.
http://marc.info/?l=linux-kernel&m=125752550404513&w=2



The patch below fixes this thinko.

Reported-by: default avatarAlexander Miller <Miller@fmi.uni-stuttgart.de>
Tested-by: default avatarAlexander Miller <Miller@fmi.uni-stuttgart.de>
Signed-off-by: default avatarVenkatesh Pallipadi <venkatesh.pallipadi@intel.com>
Signed-off-by: default avatarDave Jones <davej@redhat.com>
parent 8dca15e4
Loading
Loading
Loading
Loading
+2 −2
Original line number Original line Diff line number Diff line
@@ -116,9 +116,9 @@ static inline cputime64_t get_cpu_idle_time_jiffy(unsigned int cpu,


	idle_time = cputime64_sub(cur_wall_time, busy_time);
	idle_time = cputime64_sub(cur_wall_time, busy_time);
	if (wall)
	if (wall)
		*wall = cur_wall_time;
		*wall = (cputime64_t)jiffies_to_usecs(cur_wall_time);


	return idle_time;
	return (cputime64_t)jiffies_to_usecs(idle_time);;
}
}


static inline cputime64_t get_cpu_idle_time(unsigned int cpu, cputime64_t *wall)
static inline cputime64_t get_cpu_idle_time(unsigned int cpu, cputime64_t *wall)
+2 −2
Original line number Original line Diff line number Diff line
@@ -133,9 +133,9 @@ static inline cputime64_t get_cpu_idle_time_jiffy(unsigned int cpu,


	idle_time = cputime64_sub(cur_wall_time, busy_time);
	idle_time = cputime64_sub(cur_wall_time, busy_time);
	if (wall)
	if (wall)
		*wall = cur_wall_time;
		*wall = (cputime64_t)jiffies_to_usecs(cur_wall_time);


	return idle_time;
	return (cputime64_t)jiffies_to_usecs(idle_time);
}
}


static inline cputime64_t get_cpu_idle_time(unsigned int cpu, cputime64_t *wall)
static inline cputime64_t get_cpu_idle_time(unsigned int cpu, cputime64_t *wall)