Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 514f1eb5 authored by Paul E. McKenney's avatar Paul E. McKenney
Browse files

documentation: Document illegality of call_rcu() from offline CPUs



There is already a blanket statement about no member of RCU's API
being legal from an offline CPU, but add an explicit note where it
states that it is illegal to invoke call_rcu() from an NMI handler.

Signed-off-by: default avatarPaul E. McKenney <paulmck@linux.vnet.ibm.com>
parent d8936c0b
Loading
Loading
Loading
Loading
+2 −1
Original line number Original line Diff line number Diff line
@@ -1354,7 +1354,8 @@ situations where neither <tt>synchronize_rcu()</tt> nor
<tt>synchronize_rcu_expedited()</tt> would be legal,
<tt>synchronize_rcu_expedited()</tt> would be legal,
including within preempt-disable code, <tt>local_bh_disable()</tt> code,
including within preempt-disable code, <tt>local_bh_disable()</tt> code,
interrupt-disable code, and interrupt handlers.
interrupt-disable code, and interrupt handlers.
However, even <tt>call_rcu()</tt> is illegal within NMI handlers.
However, even <tt>call_rcu()</tt> is illegal within NMI handlers
and from offline CPUs.
The callback function (<tt>remove_gp_cb()</tt> in this case) will be
The callback function (<tt>remove_gp_cb()</tt> in this case) will be
executed within softirq (software interrupt) environment within the
executed within softirq (software interrupt) environment within the
Linux kernel,
Linux kernel,
+2 −1
Original line number Original line Diff line number Diff line
@@ -1513,7 +1513,8 @@ situations where neither <tt>synchronize_rcu()</tt> nor
<tt>synchronize_rcu_expedited()</tt> would be legal,
<tt>synchronize_rcu_expedited()</tt> would be legal,
including within preempt-disable code, <tt>local_bh_disable()</tt> code,
including within preempt-disable code, <tt>local_bh_disable()</tt> code,
interrupt-disable code, and interrupt handlers.
interrupt-disable code, and interrupt handlers.
However, even <tt>call_rcu()</tt> is illegal within NMI handlers.
However, even <tt>call_rcu()</tt> is illegal within NMI handlers
and from offline CPUs.
The callback function (<tt>remove_gp_cb()</tt> in this case) will be
The callback function (<tt>remove_gp_cb()</tt> in this case) will be
executed within softirq (software interrupt) environment within the
executed within softirq (software interrupt) environment within the
Linux kernel,
Linux kernel,