Messages in this thread | | | Date | Wed, 2 Sep 2020 11:43:39 +0200 | From | peterz@infradea ... | Subject | Re: [PATCH] sched/deadline: Fix stale throttling on de-/boosted tasks |
| |
On Wed, Sep 02, 2020 at 08:00:24AM +0200, Juri Lelli wrote: > On 31/08/20 13:07, Lucas Stach wrote: > > When a boosted task gets throttled, what normally happens is that it's > > immediately enqueued again with ENQUEUE_REPLENISH, which replenishes the > > runtime and clears the dl_throttled flag. There is a special case however: > > if the throttling happened on sched-out and the task has been deboosted in > > the meantime, the replenish is skipped as the task will return to its > > normal scheduling class. This leaves the task with the dl_throttled flag > > set. > > > > Now if the task gets boosted up to the deadline scheduling class again > > while it is sleeping, it's still in the throttled state. The normal wakeup > > however will enqueue the task with ENQUEUE_REPLENISH not set, so we don't > > actually place it on the rq. Thus we end up with a task that is runnable, > > but not actually on the rq and neither a immediate replenishment happens, > > nor is the replenishment timer set up, so the task is stuck in > > forever-throttled limbo. > > > > Clear the dl_throttled flag before dropping back to the normal scheduling > > class to fix this issue. > > > > Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
> Acked-by: Juri Lelli <juri.lelli@redhat.com>
Thanks!
| |