Re: [PATCH v5 10/29] sched/deadline: Reset the donor's runtime at a deboost in the class
From: Mathieu Desnoyers
Date: Sun Nov 08 2026 - 21:57:40 EST
On 2026-11-08 14:17, sashiko-bot@xxxxxxxxxx wrote:
> lost PI boost in rt_mutex_setprio() after dl_deboost() resets deadline
p->dl.deadline does not hold W1's deadline. dl_boost() copies only W1's
reservation into pi_params. The owner keeps its own deadline. A refill
during the boost adds W1's period to it. So W2's deadline is compared
with the owner's. In your case it is earlier, and the boost goes on with
W2's reservation.
A narrower case is right. A wakeup during the boost can give the owner a
period of W1's parameters. Its deadline can then be earlier than W2's.
The deboost then starts a period of its own, which can end after W2's
deadline. The next version tests the top waiter again after that reset.
> donor runtime and deadline kept in dl_deboost() when <= dl_runtime
Known, and said in the message: "A runtime of dl_runtime or less is
kept, with its deadline. By that deadline, the task then runs at most
one runtime of its own." The second runtime comes after that deadline,
in a new period of the task's own.
> dl_deboost() leaves deadline == 0 when task is not queued
Right. A task blocked on another rt_mutex is not queued, and the chain
walk copies the deadline 0 into its waiter node. The next version starts
the new period in dl_deboost(), from the rq clock. A new case,
deboost_blocked_keeps_order, fails on v5 and passes with the fix. The
constrained deadline check does not throttle there. With a deadline of
0, dl_next_period() is dl_period - dl_deadline. The rq clock is past it,
except in the first seconds after boot.
Thanks,
Mathieu
--
Mathieu Desnoyers
EfficiOS Inc.
https://www.efficios.com