Commit bb4700ad authored by Juri Lelli's avatar Juri Lelli Committed by Peter Zijlstra
Browse files

sched/deadline: Always stop dl-server before changing parameters



Commit cccb45d7 ("sched/deadline: Less agressive dl_server
handling") reduced dl-server overhead by delaying disabling servers only
after there are no fair task around for a whole period, which means that
deadline entities are not dequeued right away on a server stop event.
However, the delay opens up a window in which a request for changing
server parameters can break per-runqueue running_bw tracking, as
reported by Yuri.

Close the problematic window by unconditionally calling dl_server_stop()
before applying the new parameters (ensuring deadline entities go
through an actual dequeue).

Fixes: cccb45d7 ("sched/deadline: Less agressive dl_server handling")
Reported-by: default avatarYuri Andriaccio <yurand2000@gmail.com>
Signed-off-by: default avatarJuri Lelli <juri.lelli@redhat.com>
Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
Reviewed-by: default avatarValentin Schneider <vschneid@redhat.com>
Link: https://lore.kernel.org/r/20250721-upstream-fix-dlserver-lessaggressive-b4-v1-1-4ebc10c87e40@redhat.com
parent 4717432d
Loading
Loading
Loading
Loading
+2 −4
Original line number Diff line number Diff line
@@ -376,10 +376,8 @@ static ssize_t sched_fair_server_write(struct file *filp, const char __user *ubu
			return  -EINVAL;
		}

		if (rq->cfs.h_nr_queued) {
		update_rq_clock(rq);
		dl_server_stop(&rq->fair_server);
		}

		retval = dl_server_apply_params(&rq->fair_server, runtime, period, 0);
		if (retval)