Although the unbound workqueue cpumask can be overriden through sysfs, we also want to affine the workqueues when isolcpus= will be reimplemented on top of housekeeping.
Signed-off-by: Frederic Weisbecker <[email protected]> Cc: Chris Metcalf <[email protected]> Cc: Rik van Riel <[email protected]> Cc: Peter Zijlstra <[email protected]> Cc: Thomas Gleixner <[email protected]> Cc: Mike Galbraith <[email protected]> Cc: Ingo Molnar <[email protected]> Cc: Christoph Lameter <[email protected]> Cc: Paul E. McKenney <[email protected]> Cc: Wanpeng Li <[email protected]> Cc: Luiz Capitulino <[email protected]> --- include/linux/housekeeping.h | 1 + kernel/workqueue.c | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/include/linux/housekeeping.h b/include/linux/housekeeping.h index b1a62544..0959601 100644 --- a/include/linux/housekeeping.h +++ b/include/linux/housekeeping.h @@ -10,6 +10,7 @@ enum hk_flags { HK_FLAG_RCU = (1 << 1), HK_FLAG_MISC = (1 << 2), HK_FLAG_SCHED = (1 << 3), + HK_FLAG_WORKQUEUE = (1 << 4), }; #ifdef CONFIG_CPU_ISOLATION diff --git a/kernel/workqueue.c b/kernel/workqueue.c index ca937b0..256e3cb 100644 --- a/kernel/workqueue.c +++ b/kernel/workqueue.c @@ -48,6 +48,7 @@ #include <linux/nodemask.h> #include <linux/moduleparam.h> #include <linux/uaccess.h> +#include <linux/housekeeping.h> #include "workqueue_internal.h" @@ -5546,7 +5547,7 @@ int __init workqueue_init_early(void) WARN_ON(__alignof__(struct pool_workqueue) < __alignof__(long long)); BUG_ON(!alloc_cpumask_var(&wq_unbound_cpumask, GFP_KERNEL)); - cpumask_copy(wq_unbound_cpumask, cpu_possible_mask); + cpumask_copy(wq_unbound_cpumask, housekeeping_cpumask(HK_FLAG_WORKQUEUE)); pwq_cache = KMEM_CACHE(pool_workqueue, SLAB_PANIC); -- 2.7.4

