Commit 748e589e authored by Joel Fernandes (Google)'s avatar Joel Fernandes (Google) Committed by Chromeos LUCI
Browse files

CHROMIUM: rcu: Disable lazy if call_rcu() called when GPs expedited

During suspend, we see failures to suspend 1 in 300-500 suspends.
Looking closer, it appears that we are queuing lazy callbacks even
though rcu_gp_is_expedited(). These delays appear to not be very welcome
by the suspend/resume code as evidenced by these occasional suspend
failures.

This commit therefore checks if rcu_gp_is_expedited() and ignores the
lazy hint if so.

Ignoring the lazy hint if rcu_gp_is_expedited() makes the 3000
suspend/resume cycles pass reliably on a 12th gen 12-core Intel CPU.

[
  This is a temporary patch as it is a critical issue that we need to
  fix in product and the upstream fix will take some time.
  Once upstreamed, we can revert this and land the upstream one.
]

BUG=b:263554761
TEST=suspend_stress_test
(am from https://patchwork.kernel.org/patch/13094428/)
(also found at https://lore.kernel.org/r/20230109221756.1361168-1-joel@joelfernandes.org

)

Fixes: 3cb278e7 ("rcu: Make call_rcu() lazy to save power")
Change-Id: I55430a6c6cc20f6e09dee45477c485d650e405c3
Signed-off-by: default avatarJoel Fernandes (Google) <joel@joelfernandes.org>
Signed-off-by: default avatarParshuram Sangle <parshuram.sangle@intel.corp-partner.google.com>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/kernel/+/4150549


Auto-Submit: Joel Fernandes <joelaf@google.com>
Tested-by: default avatarJoel Fernandes <joelaf@google.com>
Reviewed-by: default avatarRoss Zwisler <zwisler@google.com>
Commit-Queue: Joel Fernandes <joelaf@google.com>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/kernel/+/4262372


Reviewed-by: default avatarJoel Fernandes <joelaf@google.com>
parent 37a43ee7
Loading
Loading
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment