• Tejun Heo's avatar
    workqueue: reimplement CPU hotplugging support using trustee · db7bccf4
    Tejun Heo authored
    Reimplement CPU hotplugging support using trustee thread.  On CPU
    down, a trustee thread is created and each step of CPU down is
    executed by the trustee and workqueue_cpu_callback() simply drives and
    waits for trustee state transitions.
    
    CPU down operation no longer waits for works to be drained but trustee
    sticks around till all pending works have been completed.  If CPU is
    brought back up while works are still draining,
    workqueue_cpu_callback() tells trustee to step down and tell workers
    to rebind to the cpu.
    
    As it's difficult to tell whether cwqs are empty if it's freezing or
    frozen, trustee doesn't consider draining to be complete while a gcwq
    is freezing or frozen (tracked by new GCWQ_FREEZING flag).  Also,
    workers which get unbound from their cpu are marked with WORKER_ROGUE.
    
    Trustee based implementation doesn't bring any new feature at this
    point but it will be used to manage worker pool when dynamic shared
    worker pool is implemented.
    Signed-off-by: default avatarTejun Heo <tj@kernel.org>
    db7bccf4
workqueue.c 59.8 KB