[0/7] rcu: Fix expedited GP deadlock

Message ID 20240112154621.261852-1-frederic@kernel.org
Headers
Series rcu: Fix expedited GP deadlock |

Message

Frederic Weisbecker Jan. 12, 2024, 3:46 p.m. UTC
  TREE04 can trigger a writer stall if run with memory pressure. This
is due to a circular dependency between waiting for expedited grace
period and polling on expedited grace period when workqueues go back
to mayday serialization.

Here is a proposal fix.

Changes since v2 (no functional changes, just renames and reorganization):

_ Move nocb cleanups to their own series
_ Rename can_queue parameter to use_worker [2/7]
_ Better explain the rename of the mutex [3/7]
_ New commit with just code move to ease review [4/7]
_ Comment declaration of the new rnp->exp_worker field [5/7]

Thanks.

Frederic Weisbecker (7):
  rcu/exp: Fix RCU expedited parallel grace period kworker allocation
    failure recovery
  rcu/exp: Handle RCU expedited grace period kworker allocation failure
  rcu: s/boost_kthread_mutex/kthread_mutex
  rcu/exp: Move expedited kthread worker creation functions above
    rcutree_prepare_cpu()
  rcu/exp: Make parallel exp gp kworker per rcu node
  rcu/exp: Handle parallel exp gp kworkers affinity
  rcu/exp: Remove rcu_par_gp_wq

 kernel/rcu/rcu.h         |   5 --
 kernel/rcu/tree.c        | 175 +++++++++++++++++++++++++++------------
 kernel/rcu/tree.h        |  11 ++-
 kernel/rcu/tree_exp.h    |  78 +++--------------
 kernel/rcu/tree_plugin.h |  52 ++----------
 5 files changed, 142 insertions(+), 179 deletions(-)
  

Comments

Paul E. McKenney Jan. 16, 2024, 7:11 p.m. UTC | #1
On Fri, Jan 12, 2024 at 04:46:14PM +0100, Frederic Weisbecker wrote:
> TREE04 can trigger a writer stall if run with memory pressure. This
> is due to a circular dependency between waiting for expedited grace
> period and polling on expedited grace period when workqueues go back
> to mayday serialization.
> 
> Here is a proposal fix.
> 
> Changes since v2 (no functional changes, just renames and reorganization):
> 
> _ Move nocb cleanups to their own series
> _ Rename can_queue parameter to use_worker [2/7]
> _ Better explain the rename of the mutex [3/7]
> _ New commit with just code move to ease review [4/7]
> _ Comment declaration of the new rnp->exp_worker field [5/7]
> 
> Thanks.

Hearing no objections, queued for testing and further review,
thank you!

							Thanx, Paul

> Frederic Weisbecker (7):
>   rcu/exp: Fix RCU expedited parallel grace period kworker allocation
>     failure recovery
>   rcu/exp: Handle RCU expedited grace period kworker allocation failure
>   rcu: s/boost_kthread_mutex/kthread_mutex
>   rcu/exp: Move expedited kthread worker creation functions above
>     rcutree_prepare_cpu()
>   rcu/exp: Make parallel exp gp kworker per rcu node
>   rcu/exp: Handle parallel exp gp kworkers affinity
>   rcu/exp: Remove rcu_par_gp_wq
> 
>  kernel/rcu/rcu.h         |   5 --
>  kernel/rcu/tree.c        | 175 +++++++++++++++++++++++++++------------
>  kernel/rcu/tree.h        |  11 ++-
>  kernel/rcu/tree_exp.h    |  78 +++--------------
>  kernel/rcu/tree_plugin.h |  52 ++----------
>  5 files changed, 142 insertions(+), 179 deletions(-)
> 
> -- 
> 2.34.1
> 
>