]> git.ipfire.org Git - thirdparty/kernel/linux.git/commit
cgroup/cpuset: Defer housekeeping_update() calls from CPU hotplug to workqueue
authorWaiman Long <longman@redhat.com>
Sat, 21 Feb 2026 18:54:17 +0000 (13:54 -0500)
committerTejun Heo <tj@kernel.org>
Mon, 23 Feb 2026 20:42:11 +0000 (10:42 -1000)
commit6df415aa46ec10d607da5063d88492a7c7762074
tree397e8609732e6fa9c02e3ad8baa1f8e66e442ad6
parent3bfe47967191f42d17510713b31a47d9284b8c5a
cgroup/cpuset: Defer housekeeping_update() calls from CPU hotplug to workqueue

The cpuset_handle_hotplug() may need to invoke housekeeping_update(),
for instance, when an isolated partition is invalidated because its
last active CPU has been put offline.

As we are going to enable dynamic update to the nozh_full housekeeping
cpumask (HK_TYPE_KERNEL_NOISE) soon with the help of CPU hotplug,
allowing the CPU hotplug path to call into housekeeping_update() directly
from update_isolation_cpumasks() will likely cause deadlock. So we
have to defer any call to housekeeping_update() after the CPU hotplug
operation has finished. This is now done via the workqueue where
the update_hk_sched_domains() function will be invoked via the
hk_sd_workfn().

An concurrent cpuset control file write may have executed the required
update_hk_sched_domains() function before the work function is called. So
the work function call may become a no-op when it is invoked.

Signed-off-by: Waiman Long <longman@redhat.com>
Signed-off-by: Tejun Heo <tj@kernel.org>
kernel/cgroup/cpuset.c
tools/testing/selftests/cgroup/test_cpuset_prs.sh