• Tejun Heo's avatar
    workqueue: Call wq_update_unbound_numa() on all CPUs in NUMA node on CPU hotplug · 4cbfd3de
    Tejun Heo authored
    When a CPU went online or offline, wq_update_unbound_numa() was called only
    on the CPU which was going up or down. This works fine because all CPUs on
    the same NUMA node share the same pool_workqueue slot - one CPU updating it
    updates it for everyone in the node.
    
    However, future changes will make each CPU use a separate pool_workqueue
    even when they're sharing the same worker_pool, which requires updating
    pool_workqueue's for all CPUs which may be sharing the same pool_workqueue
    on hotplug.
    
    To accommodate the planned changes, this patch updates
    workqueue_on/offline_cpu() so that they call wq_update_unbound_numa() for
    all CPUs sharing the same NUMA node as the CPU going up or down. In the
    current code, the second+ calls would be noops and there shouldn't be any
    behavior changes.
    
    * As wq_update_unbound_numa() is now called on multiple CPUs per each
      hotplug event, @cpu is renamed to @hotplug_cpu and another @cpu argument
      is added. The former indicates the CPU being hot[un]plugged and the latter
      the CPU whose pool_workqueue is being updated.
    
    * In wq_update_unbound_numa(), cpu_off is renamed to off_cpu for consistency
      with the new @hotplug_cpu.
    Signed-off-by: default avatarTejun Heo <tj@kernel.org>
    4cbfd3de
workqueue.c 181 KB