Skip to content
  • Paul E. McKenney's avatar
    rcu: Create RCU-specific workqueues with rescuers · ad7c946b
    Paul E. McKenney authored
    
    
    RCU's expedited grace periods can participate in out-of-memory deadlocks
    due to all available system_wq kthreads being blocked and there not being
    memory available to create more.  This commit prevents such deadlocks
    by allocating an RCU-specific workqueue_struct at early boot time, and
    providing it with a rescuer to ensure forward progress.  This uses the
    shiny new init_rescuer() function provided by Tejun (but indirectly).
    
    This commit also causes SRCU to use this new RCU-specific
    workqueue_struct.  Note that SRCU's use of workqueues never blocks them
    waiting for readers, so this should be safe from a forward-progress
    viewpoint.  Note that this moves SRCU from system_power_efficient_wq
    to a normal workqueue.  In the unlikely event that this results in
    measurable degradation, a separate power-efficient workqueue will be
    creates for SRCU.
    
    Reported-by: default avatarPrateek Sood <prsood@codeaurora.org>
    Reported-by: default avatarTejun Heo <tj@kernel.org>
    Signed-off-by: default avatarPaul E. McKenney <paulmck@linux.vnet.ibm.com>
    Acked-by: default avatarTejun Heo <tj@kernel.org>
    ad7c946b