• Lai Jiangshan's avatar
    workqueue: Allow modifying low level unbound workqueue cpumask · 042f7df1
    Lai Jiangshan authored
    Allow to modify the low-level unbound workqueues cpumask through
    sysfs. This is performed by traversing the entire workqueue list
    and calling apply_wqattrs_prepare() on the unbound workqueues
    with the new low level mask. Only after all the preparation are done,
    we commit them all together.
    
    Ordered workqueues are ignored from the low level unbound workqueue
    cpumask, it will be handled in near future.
    
    All the (default & per-node) pwqs are mandatorily controlled by
    the low level cpumask. If the user configured cpumask doesn't overlap
    with the low level cpumask, the low level cpumask will be used for the
    wq instead.
    
    The comment of wq_calc_node_cpumask() is updated and explicitly
    requires that its first argument should be the attrs of the default
    pwq.
    
    The default wq_unbound_cpumask is cpu_possible_mask.  The workqueue
    subsystem doesn't know its best default value, let the system manager
    or the other subsystem set it when needed.
    
    Changed from V8:
      merge the calculating code for the attrs of the default pwq together.
      minor change the code&comments for saving the user configured attrs.
      remove unnecessary list_del().
      minor update the comment of wq_calc_node_cpumask().
      update the comment of workqueue_set_unbound_cpumask();
    
    Cc: Christoph Lameter <cl@linux.com>
    Cc: Kevin Hilman <khilman@linaro.org>
    Cc: Lai Jiangshan <laijs@cn.fujitsu.com>
    Cc: Mike Galbraith <bitbucket@online.de>
    Cc: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
    Cc: Tejun Heo <tj@kernel.org>
    Cc: Viresh Kumar <viresh.kumar@linaro.org>
    Cc: Frederic Weisbecker <fweisbec@gmail.com>
    Original-patch-by: default avatarFrederic Weisbecker <fweisbec@gmail.com>
    Signed-off-by: default avatarLai Jiangshan <laijs@cn.fujitsu.com>
    Signed-off-by: default avatarTejun Heo <tj@kernel.org>
    042f7df1
workqueue.c 146 KB