diff options
author | Josh Boyer <jwboyer@redhat.com> | 2011-08-04 09:55:54 -0400 |
---|---|---|
committer | Josh Boyer <jwboyer@redhat.com> | 2011-08-04 11:12:43 -0400 |
commit | 8e3ae989b3feba97db709d667ae39fbe2c7ace31 (patch) | |
tree | a04dcb7ae27ecf3a0c4620f82c72c3e71641d0e7 /rcu-prevent-early-schedule.patch | |
parent | 1aa2339b01b1e13a2a4f660e54656ab0df1ecfb5 (diff) | |
download | kernel-8e3ae989b3feba97db709d667ae39fbe2c7ace31.tar.gz kernel-8e3ae989b3feba97db709d667ae39fbe2c7ace31.tar.xz kernel-8e3ae989b3feba97db709d667ae39fbe2c7ace31.zip |
3.0-git19 snapshot
Add epoll patch until it gets upstreamed
Add trial patch to fix the scheduling while atomic issues around pidmap_init
Diffstat (limited to 'rcu-prevent-early-schedule.patch')
-rw-r--r-- | rcu-prevent-early-schedule.patch | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/rcu-prevent-early-schedule.patch b/rcu-prevent-early-schedule.patch new file mode 100644 index 000000000..849aaa628 --- /dev/null +++ b/rcu-prevent-early-schedule.patch @@ -0,0 +1,34 @@ +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 + |