On 06/07/17 21:43, Joel Fernandes wrote:
On Tue, Jul 4, 2017 at 10:34 AM, Patrick Bellasi
<patrick.bellasi@xxxxxxx> wrote:
[...]
@@ -304,6 +304,12 @@ static void sugov_update_shared(struct update_util_data *hook, u64 time,
sg_cpu->util = util;
sg_cpu->max = max;
+
+ /* CPU is entering IDLE, reset flags without triggering an update */
+ if (unlikely(flags & SCHED_CPUFREQ_IDLE)) {
+ sg_cpu->flags = 0;
+ goto done;
+ }
Instead of defining a new flag for idle, wouldn't another way be to
just clear the flag from the RT scheduling class with an extra call to
cpufreq_update_util with flags = 0 during dequeue_rt_entity? That
seems to me to be also the right place to clear the flag since the
flag is set in the corresponding class to begin with.
Make sense to me too. Also considering that for DL (with my patches) we
don't generally want to clear the flag at dequeue time, but only when
the 0-lag timer fires.