Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754808AbbDTXRJ (ORCPT ); Mon, 20 Apr 2015 19:17:09 -0400 Received: from mga03.intel.com ([134.134.136.65]:12190 "EHLO mga03.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752914AbbDTXRH (ORCPT ); Mon, 20 Apr 2015 19:17:07 -0400 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.11,611,1422950400"; d="scan'208";a="559075015" Date: Tue, 21 Apr 2015 06:59:02 +0800 From: Wanpeng Li To: Juri Lelli Cc: Ingo Molnar , Peter Zijlstra , linux-kernel@vger.kernel.org, Wanpeng Li Subject: Re: [PATCH 4/7] sched/deadline: reschedule if stop task slip in after pull operations Message-ID: <20150420225901.GA7692@kernel> Reply-To: Wanpeng Li References: <1428310399-13489-1-git-send-email-wanpeng.li@linux.intel.com> <1428310399-13489-4-git-send-email-wanpeng.li@linux.intel.com> <5534D48A.20304@arm.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <5534D48A.20304@arm.com> User-Agent: Mutt/1.5.21 (2010-09-15) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2132 Lines: 68 Hi Juri, On Mon, Apr 20, 2015 at 11:27:22AM +0100, Juri Lelli wrote: >Hi, > >On 06/04/2015 09:53, Wanpeng Li wrote: >> pull_dl_task can drop (and re-acquire) rq->lock, this means a stop task >> can slip in, in which case we need to reschedule. This patch add the >> reschedule when the scenario occurs. >> > >Ok, I guess it can happen. Doesn't RT have the same problem? It seems that >it also has to deal with DL tasks slipping in, right? Yeah, I will send another patch to handle RT class in the v2 patchset. :) Regards, Wanpeng Li > >Thanks, > >- Juri > >> Signed-off-by: Wanpeng Li >> --- >> kernel/sched/deadline.c | 16 +++++++++++++++- >> 1 file changed, 15 insertions(+), 1 deletion(-) >> >> diff --git a/kernel/sched/deadline.c b/kernel/sched/deadline.c >> index b8b9355..844da0f 100644 >> --- a/kernel/sched/deadline.c >> +++ b/kernel/sched/deadline.c >> @@ -1739,7 +1739,13 @@ static void switched_from_dl(struct rq *rq, struct task_struct *p) >> if (!task_on_rq_queued(p) || rq->dl.dl_nr_running) >> return; >> >> - if (pull_dl_task(rq)) >> + /* >> + * pull_dl_task() can drop (and re-acquire) rq->lock; this >> + * means a stop task can slip in, in which case we need to >> + * reschedule. >> + */ >> + if (pull_dl_task(rq) || >> + (rq->stop && task_on_rq_queued(rq->stop))) >> resched_curr(rq); >> } >> >> @@ -1786,6 +1792,14 @@ static void prio_changed_dl(struct rq *rq, struct task_struct *p, >> pull_dl_task(rq); >> >> /* >> + * pull_dl_task() can drop (and re-acquire) rq->lock; this >> + * means a stop task can slip in, in which case we need to >> + * reschedule. >> + */ >> + if (rq->stop && task_on_rq_queued(rq->stop)) >> + resched_curr(rq); >> + >> + /* >> * If we now have a earlier deadline task than p, >> * then reschedule, provided p is still on this >> * runqueue. >> -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/