]> www.infradead.org Git - users/hch/dma-mapping.git/commit
sched: Fix delayed_dequeue vs switched_from_fair()
authorPeter Zijlstra <peterz@infradead.org>
Thu, 10 Oct 2024 09:54:38 +0000 (11:54 +0200)
committerPeter Zijlstra <peterz@infradead.org>
Fri, 11 Oct 2024 08:49:32 +0000 (10:49 +0200)
commit98442f0ccd828ac42e89281a815e9e7a97533822
tree17881a78dd58ce6979825e4f4b3c8f4906b3f4f3
parent73ab05aa46b02d96509cb029a8d04fca7bbde8c7
sched: Fix delayed_dequeue vs switched_from_fair()

Commit 2e0199df252a ("sched/fair: Prepare exit/cleanup paths for delayed_dequeue")
and its follow up fixes try to deal with a rather unfortunate
situation where is task is enqueued in a new class, even though it
shouldn't have been. Mostly because the existing ->switched_to/from()
hooks are in the wrong place for this case.

This all led to Paul being able to trigger failures at something like
once per 10k CPU hours of RCU torture.

For now, do the ugly thing and move the code to the right place by
ignoring the switch hooks.

Note: Clean up the whole sched_class::switch*_{to,from}() thing.

Fixes: 2e0199df252a ("sched/fair: Prepare exit/cleanup paths for delayed_dequeue")
Reported-by: Paul E. McKenney <paulmck@kernel.org>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Link: https://lkml.kernel.org/r/20241003185037.GA5594@noisy.programming.kicks-ass.net
kernel/sched/core.c
kernel/sched/ext.c
kernel/sched/fair.c
kernel/sched/sched.h
kernel/sched/syscalls.c