diff mbox series

[3/3,v2] Revert "rcu/nocb: Fix rcuog wake-up from offline softirq"

Message ID 20241226233052.145450-4-frederic@kernel.org (mailing list archive)
State Superseded
Commit b6d4fd663be9b48bd1cc63ed23e2ad2aee11f386
Headers show
Series hrtimer: Fix timers queued locally from offline CPUs | expand

Commit Message

Frederic Weisbecker Dec. 26, 2024, 11:30 p.m. UTC
This reverts commit f7345ccc62a4b880cf76458db5f320725f28e400.

swake_up_one_online() has been removed because hrtimers can now assign
a proper online target to hrtimers queued from offline CPUs. Therefore
remove the related hackery.

Signed-off-by: Frederic Weisbecker <frederic@kernel.org>
---
 kernel/rcu/tree_nocb.h | 8 +-------
 1 file changed, 1 insertion(+), 7 deletions(-)

Comments

Usama Arif Dec. 30, 2024, 1:47 p.m. UTC | #1
On 26/12/2024 23:30, Frederic Weisbecker wrote:
> This reverts commit f7345ccc62a4b880cf76458db5f320725f28e400.
> 
> swake_up_one_online() has been removed because hrtimers can now assign
> a proper online target to hrtimers queued from offline CPUs. Therefore
> remove the related hackery.
> 
> Signed-off-by: Frederic Weisbecker <frederic@kernel.org>

Reviewed-by: Usama Arif <usamaarif642@gmail.com>
diff mbox series

Patch

diff --git a/kernel/rcu/tree_nocb.h b/kernel/rcu/tree_nocb.h
index a43141a1b3a5..a03fc19abde7 100644
--- a/kernel/rcu/tree_nocb.h
+++ b/kernel/rcu/tree_nocb.h
@@ -554,19 +554,13 @@  static void __call_rcu_nocb_wake(struct rcu_data *rdp, bool was_alldone,
 			rcu_nocb_unlock(rdp);
 			wake_nocb_gp_defer(rdp, RCU_NOCB_WAKE_LAZY,
 					   TPS("WakeLazy"));
-		} else if (!irqs_disabled_flags(flags) && cpu_online(rdp->cpu)) {
+		} else if (!irqs_disabled_flags(flags)) {
 			/* ... if queue was empty ... */
 			rcu_nocb_unlock(rdp);
 			wake_nocb_gp(rdp, false);
 			trace_rcu_nocb_wake(rcu_state.name, rdp->cpu,
 					    TPS("WakeEmpty"));
 		} else {
-			/*
-			 * Don't do the wake-up upfront on fragile paths.
-			 * Also offline CPUs can't call swake_up_one_online() from
-			 * (soft-)IRQs. Rely on the final deferred wake-up from
-			 * rcutree_report_cpu_dead()
-			 */
 			rcu_nocb_unlock(rdp);
 			wake_nocb_gp_defer(rdp, RCU_NOCB_WAKE,
 					   TPS("WakeEmptyIsDeferred"));