Skip to content

Commit 14a8570

Browse files
author
Peter Zijlstra
committed
sched/deadline: Use revised wakeup rule for dl_server
John noted that commit 1151354 ("sched/deadline: Fix 'stuck' dl_server") unfixed the issue from commit a3a70ca ("sched/deadline: Fix dl_server behaviour"). The issue in commit 1151354 was for wakeups of the server after the deadline; in which case you *have* to start a new period. The case for a3a70ca is wakeups before the deadline. Now, because the server is effectively running a least-laxity policy, it means that any wakeup during the runnable phase means dl_entity_overflow() will be true. This means we need to adjust the runtime to allow it to still run until the existing deadline expires. Use the revised wakeup rule for dl_defer entities. Fixes: 1151354 ("sched/deadline: Fix 'stuck' dl_server") Reported-by: John Stultz <[email protected]> Signed-off-by: Peter Zijlstra (Intel) <[email protected]> Acked-by: Juri Lelli <[email protected]> Tested-by: John Stultz <[email protected]> Link: https://patch.msgid.link/[email protected]
1 parent 591cd65 commit 14a8570

1 file changed

Lines changed: 1 addition & 1 deletion

File tree

kernel/sched/deadline.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1027,7 +1027,7 @@ static void update_dl_entity(struct sched_dl_entity *dl_se)
10271027
if (dl_time_before(dl_se->deadline, rq_clock(rq)) ||
10281028
dl_entity_overflow(dl_se, rq_clock(rq))) {
10291029

1030-
if (unlikely(!dl_is_implicit(dl_se) &&
1030+
if (unlikely((!dl_is_implicit(dl_se) || dl_se->dl_defer) &&
10311031
!dl_time_before(dl_se->deadline, rq_clock(rq)) &&
10321032
!is_dl_boosted(dl_se))) {
10331033
update_dl_revised_wakeup(dl_se, rq);

0 commit comments

Comments
 (0)