Commit e38be1c7 authored by Andrea Righi's avatar Andrea Righi Committed by Tejun Heo
Browse files

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: 18853ba7 ("sched_ext: Track currently locked rq")
Reported-by: default avatarTejun Heo <tj@kernel.org>
Signed-off-by: default avatarAndrea Righi <arighi@nvidia.com>
Tested-by: default avatarChangwoo Min <changwoo@igalia.com>
Signed-off-by: default avatarTejun Heo <tj@kernel.org>
parent e7dcd130
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -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,