35 lines
1.3 KiB
Diff
35 lines
1.3 KiB
Diff
|
From 05b0c3b7b05471a6d53300cf6d7d88ee66eff7ed Mon Sep 17 00:00:00 2001
|
||
|
From: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
|
||
|
Date: Thu, 4 Aug 2011 11:10:24 -0400
|
||
|
Subject: [PATCH] rcu: Prevent early boot set_need_resched() from
|
||
|
__rcu_pending()
|
||
|
|
||
|
There isn't a whole lot of point in poking the scheduler before there
|
||
|
are other tasks to switch to. This commit therefore adds a check
|
||
|
for rcu_scheduler_fully_active in __rcu_pending() to suppress any
|
||
|
pre-scheduler calls to set_need_resched(). The downside of this approach
|
||
|
is additional runtime overhead in a reasonably hot code path.
|
||
|
|
||
|
Signed-off-by: Paul E. McKenney <paul.mckenney@linaro.org>
|
||
|
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
|
||
|
---
|
||
|
kernel/rcutree.c | 2 +-
|
||
|
1 files changed, 1 insertions(+), 1 deletions(-)
|
||
|
|
||
|
diff --git a/kernel/rcutree.c b/kernel/rcutree.c
|
||
|
index ba06207..9c8a3f9 100644
|
||
|
--- a/kernel/rcutree.c
|
||
|
+++ b/kernel/rcutree.c
|
||
|
@@ -1671,7 +1671,7 @@ static int __rcu_pending(struct rcu_state *rsp, struct rcu_data *rdp)
|
||
|
check_cpu_stall(rsp, rdp);
|
||
|
|
||
|
/* Is the RCU core waiting for a quiescent state from this CPU? */
|
||
|
- if (rdp->qs_pending && !rdp->passed_quiesc) {
|
||
|
+ if (rcu_scheduler_fully_active && rdp->qs_pending && !rdp->passed_quiesc) {
|
||
|
|
||
|
/*
|
||
|
* If force_quiescent_state() coming soon and this CPU
|
||
|
--
|
||
|
1.7.6
|
||
|
|