rcu: Move synchronize_sched_expedited() to combining tree
authorPaul E. McKenney <paulmck@linux.vnet.ibm.com>
Wed, 5 Aug 2015 23:03:54 +0000 (16:03 -0700)
committerPaul E. McKenney <paulmck@linux.vnet.ibm.com>
Mon, 21 Sep 2015 04:16:20 +0000 (21:16 -0700)
commitbce5fa12aad148e15efd9bc0015dc4898b6e723b
tree799e88458d5eda75b2334325777c9ce1bb66d3e6
parent8203d6d0ee784cfb2ebf89053f7fe399abc867d7
rcu: Move synchronize_sched_expedited() to combining tree

Currently, synchronize_sched_expedited() uses a single global counter
to track the number of remaining context switches that the current
expedited grace period must wait on.  This is problematic on large
systems, where the resulting memory contention can be pathological.
This commit therefore makes synchronize_sched_expedited() instead use
the combining tree in the same manner as synchronize_rcu_expedited(),
keeping memory contention down to a dull roar.

This commit creates a temporary function sync_sched_exp_select_cpus()
that is very similar to sync_rcu_exp_select_cpus().  A later commit
will consolidate these two functions, which becomes possible when
synchronize_sched_expedited() switches from stop_one_cpu_nowait() to
smp_call_function_single().

Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
kernel/rcu/tree.c
kernel/rcu/tree.h