rcu-tasks: Correctly handle nohz_full holdout tasks for Tasks RCU

rcu_task_enter() and rcu_task_exit() are not called for NMI handler
entry and exit. So, RCU Tasks Rude grace period wait is required to
ensure that NMI handlers have exited. For architectures which do not
require Tasks RCU Rude (as the code sections where RCU is not watching
are marked as noinstr), NMI handlers task exit to eqs need to be handled
correctly for Tasks RCU holdout tasks running on nohz_full CPUs. Use
CT_RCU_WATCHING for detecting extended quiescent state for such tasks,
ensuring that task do not migrate from/to the CPU before/after detecting
extended quiescent state on the CPU.

Suggested-by: Frederic Weisbecker <frederic@kernel.org>
Signed-off-by: Neeraj Upadhyay <neeraj.upadhyay@kernel.org>
1 file changed