• Waiman Long's avatar
    workqueue: Add workqueue_unbound_exclude_cpumask() to exclude CPUs from wq_unbound_cpumask · fe28f631
    Waiman Long authored
    
    
    When the "isolcpus" boot command line option is used to add a set
    of isolated CPUs, those CPUs will be excluded automatically from
    wq_unbound_cpumask to avoid running work functions from unbound
    workqueues.
    
    Recently cpuset has been extended to allow the creation of partitions
    of isolated CPUs dynamically. To make it closer to the "isolcpus"
    in functionality, the CPUs in those isolated cpuset partitions should be
    excluded from wq_unbound_cpumask as well. This can be done currently by
    explicitly writing to the workqueue's cpumask sysfs file after creating
    the isolated partitions. However, this process can be error prone.
    
    Ideally, the cpuset code should be allowed to request the workqueue code
    to exclude those isolated CPUs from wq_unbound_cpumask so that this
    operation can be done automatically and the isolated CPUs will be returned
    back to wq_unbound_cpumask after the destructions of the isolated
    cpuset partitions.
    
    This patch adds a new workqueue_unbound_exclude_cpumask() function to
    enable that. This new function will exclude the specified isolated
    CPUs from wq_unbound_cpumask. To be able to restore those isolated
    CPUs back after the destruction of isolated cpuset partitions, a new
    wq_requested_unbound_cpumask is added to store the user provided unbound
    cpumask either from the boot command line options or from writing to
    the cpumask sysfs file. This new cpumask provides the basis for CPU
    exclusion.
    
    To enable users to understand how the wq_unbound_cpumask is being
    modified internally, this patch also exposes the newly introduced
    wq_requested_unbound_cpumask as well as a wq_isolated_cpumask to
    store the cpumask to be excluded from wq_unbound_cpumask as read-only
    sysfs files.
    Signed-off-by: default avatarWaiman Long <longman@redhat.com>
    Signed-off-by: default avatarTejun Heo <tj@kernel.org>
    fe28f631
workqueue.c 191 KB