lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Date:   Thu, 17 May 2018 09:10:09 +0200
From:   Vincent Guittot <vincent.guittot@...aro.org>
To:     Viresh Kumar <viresh.kumar@...aro.org>
Cc:     Peter Zijlstra <peterz@...radead.org>,
        Ingo Molnar <mingo@...nel.org>,
        linux-kernel <linux-kernel@...r.kernel.org>,
        Patrick Bellasi <patrick.bellasi@....com>,
        Thomas Gleixner <tglx@...utronix.de>,
        Mike Galbraith <efault@....de>,
        Juri Lelli <juri.lelli@...hat.com>,
        "# v4 . 16+" <stable@...r.kernel.org>
Subject: Re: [PATCH] sched/rt: fix call to cpufreq_update_util

On 17 May 2018 at 06:08, Viresh Kumar <viresh.kumar@...aro.org> wrote:
> On 16-05-18, 20:18, Vincent Guittot wrote:
>> With commit 8f111bc357aa ("cpufreq/schedutil: Rewrite CPUFREQ_RT support")
>> schedutil governor uses rq->rt.rt_nr_running to detect whether a RT task is
>> currently running on the CPU and to set frequency to max if necessary.
>> cpufreq_update_util() is called in enqueue/dequeue_top_rt_rq() but
>> rq->rt.rt_nr_running as not been updated yet when dequeue_top_rt_rq() is
>> called so schedutil still considers that a RT task is running when the
>> last task is dequeued. The update of rq->rt.rt_nr_running happens later
>> in dequeue_rt_stack()
>>
>> Fixes: 8f111bc357aa ('cpufreq/schedutil: Rewrite CPUFREQ_RT support')
>> Cc: <stable@...r.kernel.org> # v4.16+
>> Signed-off-by: Vincent Guittot <vincent.guittot@...aro.org>
>> ---
>>  kernel/sched/rt.c | 5 +++--
>>  1 file changed, 3 insertions(+), 2 deletions(-)
>>
>> diff --git a/kernel/sched/rt.c b/kernel/sched/rt.c
>> index 7aef6b4..6e74d3d 100644
>> --- a/kernel/sched/rt.c
>> +++ b/kernel/sched/rt.c
>> @@ -1001,8 +1001,6 @@ dequeue_top_rt_rq(struct rt_rq *rt_rq)
>>       sub_nr_running(rq, rt_rq->rt_nr_running);
>>       rt_rq->rt_queued = 0;
>>
>
> Remove this blank line as well ?

Yes good point

>
>> -     /* Kick cpufreq (see the comment in kernel/sched/sched.h). */
>> -     cpufreq_update_util(rq, 0);
>>  }
>>
>>  static void
>> @@ -1288,6 +1286,9 @@ static void dequeue_rt_stack(struct sched_rt_entity *rt_se, unsigned int flags)
>>               if (on_rt_rq(rt_se))
>>                       __dequeue_rt_entity(rt_se, flags);
>>       }
>> +
>> +     /* Kick cpufreq (see the comment in kernel/sched/sched.h). */
>> +     cpufreq_update_util(rq_of_rt_rq(rt_rq_of_se(back)), 0);
>>  }
>>
>>  static void enqueue_rt_entity(struct sched_rt_entity *rt_se, unsigned int flags)
>> --
>> 2.7.4
>
> --
> viresh

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ