Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Revert "rcu/nocb: Fix rcuog wake-up from offline softirq"

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.

Link: https://lore.kernel.org/all/20241231170712.149394-4-frederic@kernel.org/
Reviewed-by: Usama Arif <usamaarif642@gmail.com>
Reviewed-by: Joel Fernandes <joelagnelf@nvidia.com>
Signed-off-by: Frederic Weisbecker <frederic@kernel.org>
Signed-off-by: Joel Fernandes <joelagnelf@nvidia.com>

authored by

Frederic Weisbecker and committed by
Joel Fernandes
b95d1598 9520371e

+1 -7
+1 -7
kernel/rcu/tree_nocb.h
··· 554 554 rcu_nocb_unlock(rdp); 555 555 wake_nocb_gp_defer(rdp, RCU_NOCB_WAKE_LAZY, 556 556 TPS("WakeLazy")); 557 - } else if (!irqs_disabled_flags(flags) && cpu_online(rdp->cpu)) { 557 + } else if (!irqs_disabled_flags(flags)) { 558 558 /* ... if queue was empty ... */ 559 559 rcu_nocb_unlock(rdp); 560 560 wake_nocb_gp(rdp, false); 561 561 trace_rcu_nocb_wake(rcu_state.name, rdp->cpu, 562 562 TPS("WakeEmpty")); 563 563 } else { 564 - /* 565 - * Don't do the wake-up upfront on fragile paths. 566 - * Also offline CPUs can't call swake_up_one_online() from 567 - * (soft-)IRQs. Rely on the final deferred wake-up from 568 - * rcutree_report_cpu_dead() 569 - */ 570 564 rcu_nocb_unlock(rdp); 571 565 wake_nocb_gp_defer(rdp, RCU_NOCB_WAKE, 572 566 TPS("WakeEmptyIsDeferred"));