sched_ext: Fix rq lock state in hotplug ops
The ops.cpu_online() and ops.cpu_offline() callbacks incorrectly assume
that the rq involved in the operation is locked, which is not the case
during hotplug, triggering the following warning:
WARNING: CPU: 1 PID: 20 at kernel/sched/sched.h:1504 handle_hotplug+0x280/0x340
Fix by not tracking the target rq as locked in the context of
ops.cpu_online() and ops.cpu_offline().
Fixes: 18853ba782
("sched_ext: Track currently locked rq")
Reported-by: Tejun Heo <tj@kernel.org>
Signed-off-by: Andrea Righi <arighi@nvidia.com>
Tested-by: Changwoo Min <changwoo@igalia.com>
Signed-off-by: Tejun Heo <tj@kernel.org>
This commit is contained in:
parent
e7dcd1304b
commit
e38be1c764
|
@ -3477,9 +3477,9 @@ static void handle_hotplug(struct rq *rq, bool online)
|
|||
scx_idle_update_selcpu_topology(&scx_ops);
|
||||
|
||||
if (online && SCX_HAS_OP(cpu_online))
|
||||
SCX_CALL_OP(SCX_KF_UNLOCKED, cpu_online, rq, cpu);
|
||||
SCX_CALL_OP(SCX_KF_UNLOCKED, cpu_online, NULL, cpu);
|
||||
else if (!online && SCX_HAS_OP(cpu_offline))
|
||||
SCX_CALL_OP(SCX_KF_UNLOCKED, cpu_offline, rq, cpu);
|
||||
SCX_CALL_OP(SCX_KF_UNLOCKED, cpu_offline, NULL, cpu);
|
||||
else
|
||||
scx_ops_exit(SCX_ECODE_ACT_RESTART | SCX_ECODE_RSN_HOTPLUG,
|
||||
"cpu %d going %s, exiting scheduler", cpu,
|
||||
|
|
Loading…
Reference in New Issue