[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20160225152558.2fbac9e5@utopia>
Date: Thu, 25 Feb 2016 15:25:58 +0100
From: luca abeni <luca.abeni@...tn.it>
To: Peter Zijlstra <peterz@...radead.org>
Cc: Juri Lelli <juri.lelli@....com>, linux-kernel@...r.kernel.org
Subject: Re: Question about prio_changed_dl()
Hi Peter,
On Thu, 25 Feb 2016 15:01:49 +0100
Peter Zijlstra <peterz@...radead.org> wrote:
[...]
> > so, prio_changed_dl() invokes switched_to_dl() if
> > task_on_rq_queued() is false, but in this case switched_to_dl()
> > does nothing... Am I missing something, or the
> > } else
> > switched_to_dl(rq, p);
> > is useless?
>
> Agreed, see below.
>
> > (BTW, it seems to me that switched_to_dl() is never invoked, for
> > some reason...)
>
> Hmm, it should be invoked if you do sched_setattr() to get
> SCHED_DEADLINE.
Sorry, that was me being confused...
It is prio_changed_dl() that is not invoked when the deadline
parameters are changed (I am testing a change to fix this - it actually
is included in the "Move the remaining __dl_{sub,add}_ac() calls from
core.c to deadline.c" patch I posted on Monday; I am going to extract
it in a separate patch).
switched_to_dl() is correctly invoked.
>
> ---
> Subject: sched/deadline: Remove superfluous call to switched_to_dl()
This is what I was thinking about, yes :)
Thanks,
Luca
>
> if (A || B) {
>
> } else if (A && !B) {
>
> }
>
> If A we'll take the first branch, if !A we will not satisfy the
> second. Therefore the second branch will never be taken.
>
> Cc: Juri Lelli <juri.lelli@....com>
> Reported-by: luca abeni <luca.abeni@...tn.it>
> Signed-off-by: Peter Zijlstra (Intel) <peterz@...radead.org>
> ---
> kernel/sched/deadline.c | 3 +--
> 1 file changed, 1 insertion(+), 2 deletions(-)
>
> diff --git a/kernel/sched/deadline.c b/kernel/sched/deadline.c
> index 57b939c81bce..c161c53d9424 100644
> --- a/kernel/sched/deadline.c
> +++ b/kernel/sched/deadline.c
> @@ -1768,8 +1768,7 @@ static void prio_changed_dl(struct rq *rq,
> struct task_struct *p, */
> resched_curr(rq);
> #endif /* CONFIG_SMP */
> - } else
> - switched_to_dl(rq, p);
> + }
> }
>
> const struct sched_class dl_sched_class = {
>
>
Powered by blists - more mailing lists