linux/kernel/rcu
Paul E. McKenney d143b3d1cd rcu: Simplify rcu_read_unlock_special() deferred wakeups
In !use_softirq runs, we clearly cannot rely on raise_softirq() and
its lightweight bit setting, so we must instead do some form of wakeup.
In the absence of a self-IPI when interrupts are disabled, these wakeups
can be delayed until the next interrupt occurs.  This means that calling
invoke_rcu_core() doesn't actually do any expediting.

In this case, it is better to take the "else" clause, which sets the
current CPU's resched bits and, if there is an expedited grace period
in flight, uses IRQ-work to force the needed self-IPI.  This commit
therefore removes the "else if" clause that calls invoke_rcu_core().

Reported-by: Scott Wood <swood@redhat.com>
Signed-off-by: Paul E. McKenney <paulmck@linux.ibm.com>
2019-08-01 14:04:20 -07:00
..
Kconfig treewide: Add SPDX license identifier - Makefile/Kconfig 2019-05-21 10:50:46 +02:00
Kconfig.debug treewide: Add SPDX license identifier - Makefile/Kconfig 2019-05-21 10:50:46 +02:00
Makefile License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
rcu_segcblist.c rcu/rcu_segcblist: Convert to SPDX license identifier 2019-02-09 08:43:40 -08:00
rcu_segcblist.h rcu/rcu_segcblist: Convert to SPDX license identifier 2019-02-09 08:43:40 -08:00
rcu.h rcutorture: Add trivial RCU implementation 2019-05-28 09:06:09 -07:00
rcuperf.c rcuperf: Fix cleanup path for invalid perf_type strings 2019-03-26 14:42:53 -07:00
rcutorture.c rcutorture: Upper case solves the case of the vanishing NULL pointer 2019-05-28 09:06:09 -07:00
srcutiny.c srcu: Remove cleanup_srcu_struct_quiesced() 2019-03-26 14:39:24 -07:00
srcutree.c rcu: Make __call_srcu static 2019-05-28 09:03:35 -07:00
sync.c rcu/sync: Simplify the state machine 2019-05-28 09:05:23 -07:00
tiny.c rcu: rcu_qs -- Use raise_softirq_irqoff to not save irqs twice 2019-03-26 14:37:49 -07:00
tree_exp.h Merge branches 'consolidate.2019.05.28a', 'doc.2019.05.28a', 'fixes.2019.06.13a', 'srcu.2019.05.28a', 'sync.2019.05.28a' and 'torture.2019.05.28a' into HEAD 2019-06-19 09:21:46 -07:00
tree_plugin.h rcu: Simplify rcu_read_unlock_special() deferred wakeups 2019-08-01 14:04:20 -07:00
tree_stall.h rcu: Correctly unlock root node in rcu_check_gp_start_stall() 2019-05-28 09:02:57 -07:00
tree.c Merge branches 'consolidate.2019.05.28a', 'doc.2019.05.28a', 'fixes.2019.06.13a', 'srcu.2019.05.28a', 'sync.2019.05.28a' and 'torture.2019.05.28a' into HEAD 2019-06-19 09:21:46 -07:00
tree.h rcu: Rename rcu_data's ->deferred_qs to ->exp_deferred_qs 2019-05-28 08:48:19 -07:00
update.c rcutorture: Add trivial RCU implementation 2019-05-28 09:06:09 -07:00