From: Wanpeng Li <wanpeng.li@linux.intel.com>
To: Juri Lelli <juri.lelli@arm.com>
Cc: Wanpeng Li <wanpeng.li@linux.intel.com>,
Ingo Molnar <mingo@redhat.com>,
Peter Zijlstra <peterz@infradead.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
Kirill Tkhai <tkhai@yandex.ru>
Subject: Re: [PATCH RESEND] sched/deadline: fix pull if dl task who's prio changed is not on queue
Date: Thu, 5 Mar 2015 09:28:32 +0800 [thread overview]
Message-ID: <20150305012832.GA2793@kernel> (raw)
In-Reply-To: <54F57FAD.4020306@arm.com>
Hi Juri,
On Tue, Mar 03, 2015 at 09:32:29AM +0000, Juri Lelli wrote:
>Hi,
>
>[+Kirill]
>
>On 26/02/2015 02:38, Wanpeng Li wrote:
>> Dl task who is not on queue and it is also the curr task simultaneously
>> can not happen. In addition, pull since the priority of a not on queue
>> dl task doesn't make any sense.
>>
>> This patch fix it by don't pull if dl task who's prio changed is not on
>> queue.
>>
>
>So, this is something that was already raised by Kirill, but I always
>forgot to fix :/. Thanks for reminding me!
>
>I have this fix:
Cool, your patch looks good to me.
Regards,
Wanpeng Li
>
>>From 8fcb04eee2d76042970e9561d253d1bc1fe4cc2b Mon Sep 17 00:00:00 2001
>From: Juri Lelli <juri.lelli@arm.com>
>Date: Tue, 3 Mar 2015 07:51:56 +0000
>Subject: [PATCH] sched/deadline: cleanup prio_changed_dl()
>
>rq->curr task can't be in "dequeued" state in prio_changed_dl()
>(The only place we can have that is __schedule()), but it can
>be throttled, in which case we shouldn't do balancing.
>
>Also modify the "else" branch, which is dead code (switched_to_dl()
>is not interested in dequeued tasks and we are not interested
>in balancing in this case), to take into account updates to not
>running tasks.
>
>Signed-off-by: Juri Lelli <juri.lelli@arm.com>
>Suggested-by: Kirill Tkhai <ktkhai@parallels.com>
>Suggested-by: Wanpeng Li <wanpeng.li@linux.intel.com>
>Cc: Ingo Molnar <mingo@redhat.com>
>Cc: Peter Zijlstra <peterz@infradead.org>
>Cc: Juri Lelli <juri.lelli@gmail.com>
>Cc: linux-kernel@vger.kernel.org
>---
> kernel/sched/deadline.c | 16 +++++++++++++---
> 1 file changed, 13 insertions(+), 3 deletions(-)
>
>diff --git a/kernel/sched/deadline.c b/kernel/sched/deadline.c
>index cfa45c1..9d83748 100644
>--- a/kernel/sched/deadline.c
>+++ b/kernel/sched/deadline.c
>@@ -1759,7 +1759,10 @@ static void switched_to_dl(struct rq *rq, struct task_struct *p)
> static void prio_changed_dl(struct rq *rq, struct task_struct *p,
> int oldprio)
> {
>- if (task_on_rq_queued(p) || rq->curr == p) {
>+ if (!on_dl_rq(&p->dl))
>+ return;
>+
>+ if (rq->curr == p) {
> #ifdef CONFIG_SMP
> /*
> * This might be too much, but unfortunately
>@@ -1786,8 +1789,15 @@ static void prio_changed_dl(struct rq *rq, struct task_struct *p,
> */
> resched_curr(rq);
> #endif /* CONFIG_SMP */
>- } else
>- switched_to_dl(rq, p);
>+ } else {
>+ /*
>+ * This task is not running, so if its deadline is
>+ * now more imminent than that of the current running
>+ * task then reschedule.
>+ */
>+ if (dl_time_before(p->dl.deadline, rq->curr->dl.deadline))
>+ resched_curr(rq);
>+ }
> }
>
> const struct sched_class dl_sched_class = {
>--
>2.3.0
>
>> Signed-off-by: Wanpeng Li <wanpeng.li@linux.intel.com>
>> ---
>> kernel/sched/deadline.c | 5 ++++-
>> 1 file changed, 4 insertions(+), 1 deletion(-)
>>
>> diff --git a/kernel/sched/deadline.c b/kernel/sched/deadline.c
>> index 49f92c8..ca391c0 100644
>> --- a/kernel/sched/deadline.c
>> +++ b/kernel/sched/deadline.c
>> @@ -1728,7 +1728,10 @@ static void switched_to_dl(struct rq *rq, struct task_struct *p)
>> static void prio_changed_dl(struct rq *rq, struct task_struct *p,
>> int oldprio)
>> {
>> - if (task_on_rq_queued(p) || rq->curr == p) {
>> + if (!task_on_rq_queued(p))
>> + return;
>> +
>> + if (rq->curr == p) {
>> #ifdef CONFIG_SMP
>> /*
>> * This might be too much, but unfortunately
>>
prev parent reply other threads:[~2015-03-05 1:46 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-02-26 2:38 [PATCH RESEND] sched/deadline: fix pull if dl task who's prio changed is not on queue Wanpeng Li
2015-03-03 9:32 ` Juri Lelli
2015-03-05 1:27 ` Wanpeng Li
2015-03-05 1:28 ` Wanpeng Li [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20150305012832.GA2793@kernel \
--to=wanpeng.li@linux.intel.com \
--cc=juri.lelli@arm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@redhat.com \
--cc=peterz@infradead.org \
--cc=tkhai@yandex.ru \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.