rcu: Allow rcu_read_unlock_special() to raise_softirq() if in_irq()
authorPaul E. McKenney <paulmck@linux.ibm.com>
Mon, 1 Apr 2019 22:12:47 +0000 (15:12 -0700)
committerPaul E. McKenney <paulmck@linux.ibm.com>
Sat, 25 May 2019 21:50:48 +0000 (14:50 -0700)
commit385b599e8c04fa843c4d7f785478827cc512d720
tree31ec5afef56e23943efcbf6c652059fd5e5cf73f
parent25102de65fdd246eb6801114ce6dfa3a076bb678
rcu: Allow rcu_read_unlock_special() to raise_softirq() if in_irq()

When running in an interrupt handler, raise_softirq() and
raise_softirq_irqoff() have extremely low overhead: They simply set a
bit in a per-CPU mask, which is checked upon exit from that interrupt
handler.  Therefore, if rcu_read_unlock_special() is invoked within an
interrupt handler and RCU_SOFTIRQ is in use, this commit make use of
raise_softirq_irqoff() even if there is no expedited grace period in
flight and even if this is not a nohz_full CPU.

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