]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
workqueue: Remove HK_TYPE_WQ from affecting wq_unbound_cpumask
authorWaiman Long <longman@redhat.com>
Tue, 31 Mar 2026 18:35:22 +0000 (14:35 -0400)
committerTejun Heo <tj@kernel.org>
Tue, 31 Mar 2026 21:43:25 +0000 (11:43 -1000)
For historical reason, wq_unbound_cpumask is initially set as
intersection of HK_TYPE_DOMAIN, HK_TYPE_WQ and workqueue.unbound_cpus
boot command line option.

At run time, users can update the unbound cpumask via the
/sys/devices/virtual/workqueue/cpumask sysfs file. Creation
and modification of cpuset isolated partitions will also update
wq_unbound_cpumask based on the latest HK_TYPE_DOMAIN cpumask.
The HK_TYPE_WQ cpumask is out of the picture with these runtime updates.

Complete the transition by taking HK_TYPE_WQ out from the workqueue code
and make it depends on HK_TYPE_DOMAIN only from the housekeeping side.
The final goal is to eliminate HK_TYPE_WQ as a housekeeping cpumask type.

Signed-off-by: Waiman Long <longman@redhat.com>
Acked-by: Frederic Weisbecker <frederic@kernel.org>
Signed-off-by: Tejun Heo <tj@kernel.org>
kernel/workqueue.c

index 4f543da2e7c0ba1c22db47805bc22f2024d6c8c5..18c3fe90daca60e38da5a471d4ff2720c515f26d 100644 (file)
@@ -7081,7 +7081,7 @@ int workqueue_unbound_housekeeping_update(const struct cpumask *hk)
        /*
         * If the operation fails, it will fall back to
         * wq_requested_unbound_cpumask which is initially set to
-        * (HK_TYPE_WQ ∩ HK_TYPE_DOMAIN) house keeping mask and rewritten
+        * HK_TYPE_DOMAIN house keeping mask and rewritten
         * by any subsequent write to workqueue/cpumask sysfs file.
         */
        if (!cpumask_and(cpumask, wq_requested_unbound_cpumask, hk))
@@ -7901,7 +7901,6 @@ void __init workqueue_init_early(void)
 
        cpumask_copy(wq_online_cpumask, cpu_online_mask);
        cpumask_copy(wq_unbound_cpumask, cpu_possible_mask);
-       restrict_unbound_cpumask("HK_TYPE_WQ", housekeeping_cpumask(HK_TYPE_WQ));
        restrict_unbound_cpumask("HK_TYPE_DOMAIN", housekeeping_cpumask(HK_TYPE_DOMAIN));
        if (!cpumask_empty(&wq_cmdline_cpumask))
                restrict_unbound_cpumask("workqueue.unbound_cpus", &wq_cmdline_cpumask);