mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH] sched/deadline: fix dl entity is still mark yield after replenishing
@ 2014-11-20 11:00 Wanpeng Li
  0 siblings, 0 replies; only message in thread
From: Wanpeng Li @ 2014-11-20 11:00 UTC (permalink / raw)
  To: Ingo Molnar, Peter Zijlstra
  Cc: Juri Lelli, Kirill Tkhai, linux-kernel, Wanpeng Li

Yield task semantic for deadline task is get off from the CPU until our next 
instance, we mark the task got to sleep until its current deadline by forcing 
its runtime to zero and update_curr_dl() stops it and the bandwidth timer will 
wake it up and will give it new scheduling parameters.

Bandwidth timer may fail to start in update_curr_dl() and instead replenishing 
the budget immediately, however, dl_yielded of dl_se is cleared when bandwidth 
timer fire, the immediate replenishing miss to reset it. 

This patch fix it by reseting the dl_yielded flag after the immediate replenishing
if fail to start bandwidth timer.

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 981479a..9d3e31f 100644
--- a/kernel/sched/deadline.c
+++ b/kernel/sched/deadline.c
@@ -633,8 +633,11 @@ static void update_curr_dl(struct rq *rq)
 		__dequeue_task_dl(rq, curr, 0);
 		if (likely(start_dl_timer(dl_se, curr->dl.dl_boosted)))
 			dl_se->dl_throttled = 1;
-		else
+		else {
 			enqueue_task_dl(rq, curr, ENQUEUE_REPLENISH);
+			if (unlikely(dl_se->dl_yielded))
+				dl_se->dl_yielded = 0;
+		}
 
 		if (!is_leftmost(curr, &rq->dl))
 			resched_curr(rq);
-- 
1.9.1


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2014-11-20 11:01 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-11-20 11:00 [PATCH] sched/deadline: fix dl entity is still mark yield after replenishing Wanpeng Li

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®