FAILED: patch "[PATCH] rcu: Pull deferred rcuog wake up to rcu_eqs_enter() callers" failed to apply to 4.4-stable tree
Subsystems (2)
[email protected]
maintainerThe patch below does not apply to the 4.4-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From 54b7429efffc99e845ba9381bee3244f012a06c2 Mon Sep 17 00:00:00 2001
From: Frederic Weisbecker <[email protected]>
Date: Mon, 1 Feb 2021 00:05:44 +0100
Subject: [PATCH] rcu: Pull deferred rcuog wake up to rcu_eqs_enter() callers
Deferred wakeup of rcuog kthreads upon RCU idle mode entry is going to be handled differently whether initiated by idle, user or guest. Prepare with pulling that control up to rcu_eqs_enter() callers.
Signed-off-by Frederic Weisbecker <[email protected]>
Signed-off-by Peter Zijlstra (Intel) <[email protected]>
Signed-off-by Ingo Molnar <[email protected]>
kernel/rcu/tree.c +10 -1
@@ -644,7 +644,6 @@ static noinstr void rcu_eqs_enter(bool user)trace_rcu_dyntick (TPS ("Start" ), rdp->dynticks_nesting,0 ,atomic_read (&rdp->dynticks));WARN_ON_ONCE (IS_ENABLED (CONFIG_RCU_EQS_DEBUG ) && !user && !is_idle_task (current)); rdp =this_cpu_ptr (&rcu_data); -do_nocb_deferred_wakeup (rdp);rcu_prepare_for_idle ();rcu_preempt_deferred_qs (current);
@@ -672,7 +671,10 @@ static noinstr void rcu_eqs_enter(bool user)*/ void rcu_idle_enter (void ) { +struct rcu_data *rdp =this_cpu_ptr (&rcu_data); +lockdep_assert_irqs_disabled (); +do_nocb_deferred_wakeup (rdp);rcu_eqs_enter (false); }EXPORT_SYMBOL_GPL (rcu_idle_enter);
@@ -691,7 +693,14 @@ EXPORT_SYMBOL_GPL(rcu_idle_enter);*/ noinstr void rcu_user_enter(void) { +struct rcu_data *rdp =this_cpu_ptr (&rcu_data); +lockdep_assert_irqs_disabled (); + +instrumentation_begin (); +do_nocb_deferred_wakeup (rdp); +instrumentation_end (); +rcu_eqs_enter (true); }#endif /* CONFIG_NO_HZ_FULL */