@@ -875,7 +875,7 @@ static void replenish_dl_entity(struct sched_dl_entity *dl_se)
875875 */
876876 if (dl_se -> dl_defer && !dl_se -> dl_defer_running &&
877877 dl_time_before (rq_clock (dl_se -> rq ), dl_se -> deadline - dl_se -> runtime )) {
878- if (!is_dl_boosted (dl_se ) && dl_se -> server_has_tasks ( dl_se ) ) {
878+ if (!is_dl_boosted (dl_se )) {
879879
880880 /*
881881 * Set dl_se->dl_defer_armed and dl_throttled variables to
@@ -1152,8 +1152,6 @@ static void __push_dl_task(struct rq *rq, struct rq_flags *rf)
11521152/* a defer timer will not be reset if the runtime consumed was < dl_server_min_res */
11531153static const u64 dl_server_min_res = 1 * NSEC_PER_MSEC ;
11541154
1155- static bool dl_server_stopped (struct sched_dl_entity * dl_se );
1156-
11571155static enum hrtimer_restart dl_server_timer (struct hrtimer * timer , struct sched_dl_entity * dl_se )
11581156{
11591157 struct rq * rq = rq_of_dl_se (dl_se );
@@ -1171,12 +1169,6 @@ static enum hrtimer_restart dl_server_timer(struct hrtimer *timer, struct sched_
11711169 if (!dl_se -> dl_runtime )
11721170 return HRTIMER_NORESTART ;
11731171
1174- if (!dl_se -> server_has_tasks (dl_se )) {
1175- replenish_dl_entity (dl_se );
1176- dl_server_stopped (dl_se );
1177- return HRTIMER_NORESTART ;
1178- }
1179-
11801172 if (dl_se -> dl_defer_armed ) {
11811173 /*
11821174 * First check if the server could consume runtime in background.
@@ -1579,10 +1571,8 @@ void dl_server_update_idle_time(struct rq *rq, struct task_struct *p)
15791571void dl_server_update (struct sched_dl_entity * dl_se , s64 delta_exec )
15801572{
15811573 /* 0 runtime = fair server disabled */
1582- if (dl_se -> dl_runtime ) {
1583- dl_se -> dl_server_idle = 0 ;
1574+ if (dl_se -> dl_runtime )
15841575 update_curr_dl_se (dl_se -> rq , dl_se , delta_exec );
1585- }
15861576}
15871577
15881578void dl_server_start (struct sched_dl_entity * dl_se )
@@ -1610,26 +1600,10 @@ void dl_server_stop(struct sched_dl_entity *dl_se)
16101600 dl_se -> dl_server_active = 0 ;
16111601}
16121602
1613- static bool dl_server_stopped (struct sched_dl_entity * dl_se )
1614- {
1615- if (!dl_se -> dl_server_active )
1616- return true;
1617-
1618- if (dl_se -> dl_server_idle ) {
1619- dl_server_stop (dl_se );
1620- return true;
1621- }
1622-
1623- dl_se -> dl_server_idle = 1 ;
1624- return false;
1625- }
1626-
16271603void dl_server_init (struct sched_dl_entity * dl_se , struct rq * rq ,
1628- dl_server_has_tasks_f has_tasks ,
16291604 dl_server_pick_f pick_task )
16301605{
16311606 dl_se -> rq = rq ;
1632- dl_se -> server_has_tasks = has_tasks ;
16331607 dl_se -> server_pick_task = pick_task ;
16341608}
16351609
@@ -2394,10 +2368,7 @@ static struct task_struct *__pick_task_dl(struct rq *rq)
23942368 if (dl_server (dl_se )) {
23952369 p = dl_se -> server_pick_task (dl_se );
23962370 if (!p ) {
2397- if (!dl_server_stopped (dl_se )) {
2398- dl_se -> dl_yielded = 1 ;
2399- update_curr_dl_se (rq , dl_se , 0 );
2400- }
2371+ dl_server_stop (dl_se );
24012372 goto again ;
24022373 }
24032374 rq -> dl_server = dl_se ;
0 commit comments