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

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
...@@ -1354,7 +1354,8 @@ situations where neither <tt>synchronize_rcu()</tt> nor ...@@ -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,
......
...@@ -1513,7 +1513,8 @@ situations where neither <tt>synchronize_rcu()</tt> nor ...@@ -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,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment