Merge branch 'exp.2022.05.11a' into HEAD
authorPaul E. McKenney <paulmck@kernel.org>
Wed, 11 May 2022 18:49:35 +0000 (11:49 -0700)
committerPaul E. McKenney <paulmck@kernel.org>
Wed, 11 May 2022 18:49:35 +0000 (11:49 -0700)
exp.2022.05.11a: Expedited-grace-period latency-reduction updates.

1  2 
Documentation/admin-guide/kernel-parameters.txt
kernel/rcu/Kconfig
kernel/rcu/Kconfig.debug
kernel/rcu/rcu.h
kernel/rcu/tree.c
kernel/rcu/tree.h
kernel/rcu/tree_stall.h

Simple merge
Simple merge
@@@ -536,9 -536,12 +538,14 @@@ int rcu_get_gp_kthreads_prio(void)
  void rcu_fwd_progress_check(unsigned long j);
  void rcu_force_quiescent_state(void);
  extern struct workqueue_struct *rcu_gp_wq;
+ #ifdef CONFIG_RCU_EXP_KTHREAD
+ extern struct kthread_worker *rcu_exp_gp_kworker;
+ extern struct kthread_worker *rcu_exp_par_gp_kworker;
+ #else /* !CONFIG_RCU_EXP_KTHREAD */
  extern struct workqueue_struct *rcu_par_gp_wq;
+ #endif /* CONFIG_RCU_EXP_KTHREAD */
 +void rcu_gp_slow_register(atomic_t *rgssp);
 +void rcu_gp_slow_unregister(atomic_t *rgssp);
  #endif /* #else #ifdef CONFIG_TINY_RCU */
  
  #ifdef CONFIG_RCU_NOCB_CPU
@@@ -4553,15 -4542,11 +4598,17 @@@ static int __init rcu_spawn_gp_kthread(
        smp_store_release(&rcu_state.gp_kthread, t);  /* ^^^ */
        raw_spin_unlock_irqrestore_rcu_node(rnp, flags);
        wake_up_process(t);
 -      rcu_spawn_nocb_kthreads();
 -      rcu_spawn_boost_kthreads();
 +      /* This is a pre-SMP initcall, we expect a single CPU */
 +      WARN_ON(num_online_cpus() > 1);
 +      /*
 +       * Those kthreads couldn't be created on rcu_init() -> rcutree_prepare_cpu()
 +       * due to rcu_scheduler_fully_active.
 +       */
 +      rcu_spawn_cpu_nocb_kthread(smp_processor_id());
 +      rcu_spawn_one_boost_kthread(rdp->mynode);
        rcu_spawn_core_kthreads();
+       /* Create kthread worker for expedited GPs */
+       rcu_start_exp_gp_kworkers();
        return 0;
  }
  early_initcall(rcu_spawn_gp_kthread);
Simple merge
Simple merge