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

BACKPORT: FROMGIT: rcu: Fix late wakeup when flush of bypass cblist happens

When the bypass cblist gets too big or its timeout has occurred, it is
flushed into the main cblist. However, the bypass timer is still running
and the behavior is that it would eventually expire and wake the GP
thread.

Since we are going to use the bypass cblist for lazy CBs, do the wakeup
soon as the flush for "too big or too long" bypass list happens.
Otherwise, long delays can happen for callbacks which get promoted from
lazy to non-lazy.

This is a good thing to do anyway (regardless of future lazy patches),
since it makes the behavior consistent with behavior of other code paths
where flushing into the ->cblist makes the GP kthread into a
non-sleeping state quickly.

[ Frederic Weisbecker: Changes to avoid unnecessary GP-thread wakeups plus
		    comment changes. ]

(cherry picked from commit b50606f3
 https://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git

 rcu/next)

(Backport: Patched file name has changed from upstream name.)

BUG=b:222463781
TEST=powerIdle lab tests.

Reviewed-by: default avatarFrederic Weisbecker <frederic@kernel.org>
Signed-off-by: default avatarJoel Fernandes (Google) <joel@joelfernandes.org>
Signed-off-by: default avatarPaul E. McKenney <paulmck@kernel.org>
Signed-off-by: default avatarJoel Fernandes <joelaf@google.com>
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/+/4004616


Reviewed-by: default avatarRoss Zwisler <zwisler@google.com>
Change-Id: I5fcaeb8e14ce93c49aff0f23e6d79e292a1d70b6
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/kernel/+/4069539
parent a5fff3bc
Loading
Loading
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment