[kernel] Linux-3.1-rc2

Josh Boyer jwboyer at fedoraproject.org
Mon Aug 15 14:08:57 UTC 2011


commit 6920e17ebc39b209f18c9fcf8cccf19b3b984560
Author: Josh Boyer <jwboyer at redhat.com>
Date:   Mon Aug 15 10:06:52 2011 -0400

    Linux-3.1-rc2
    
    Add better fix from Paul McKenney for rcu scheduling issue (rhbz 726877)

 kernel.spec                              |   12 +++++--
 rcu-avoid-just-onlined-cpu-resched.patch |   47 ++++++++++++++++++++++++++++++
 rcu-prevent-early-schedule.patch         |   34 ---------------------
 sources                                  |    3 +-
 4 files changed, 56 insertions(+), 40 deletions(-)
---
diff --git a/kernel.spec b/kernel.spec
index 91839ef..60dd89a 100644
--- a/kernel.spec
+++ b/kernel.spec
@@ -82,9 +82,9 @@ Summary: The Linux kernel
 # The next upstream release sublevel (base_sublevel+1)
 %define upstream_sublevel %(echo $((%{base_sublevel} + 1)))
 # The rc snapshot level
-%define rcrev 1
+%define rcrev 2
 # The git snapshot level
-%define gitrev 6
+%define gitrev 0
 # Set rpm version accordingly
 %define rpmversion 3.%{upstream_sublevel}.0
 %endif
@@ -684,7 +684,7 @@ Patch12021: udlfb-bind-framebuffer-to-interface.patch
 Patch12022: fix-cdc-ncm-dma-stack-vars.patch
 Patch12023: ums-realtek-driver-uses-stack-memory-for-DMA.patch
 Patch12024: epoll-fix-spurious-lockdep-warnings.patch
-Patch12025: rcu-prevent-early-schedule.patch
+Patch12025: rcu-avoid-just-onlined-cpu-resched.patch
 
 # Runtime power management
 Patch12203: linux-2.6-usb-pci-autosuspend.patch
@@ -1261,7 +1261,7 @@ ApplyPatch udlfb-bind-framebuffer-to-interface.patch
 ApplyPatch fix-cdc-ncm-dma-stack-vars.patch
 ApplyPatch ums-realtek-driver-uses-stack-memory-for-DMA.patch
 ApplyPatch epoll-fix-spurious-lockdep-warnings.patch
-ApplyPatch rcu-prevent-early-schedule.patch
+ApplyPatch rcu-avoid-just-onlined-cpu-resched.patch
 
 # Runtime PM
 #ApplyPatch linux-2.6-usb-pci-autosuspend.patch
@@ -1898,6 +1898,10 @@ fi
 #                 ||----w |
 #                 ||     ||
 %changelog
+* Mon Aug 15 2011 Josh Boyer <jwboyer at redhat.com>
+- Linux-3.1-rc2
+- Replace trial patch for rhbz 726877 with a better fix
+
 * Thu Aug 11 2011 Josh Boyer <jwboyer at redhat.com>
 - Linux-3.1-rc1-git6
 - Make ide_pmac a module (rhbz 730039)
diff --git a/rcu-avoid-just-onlined-cpu-resched.patch b/rcu-avoid-just-onlined-cpu-resched.patch
new file mode 100644
index 0000000..517f375
--- /dev/null
+++ b/rcu-avoid-just-onlined-cpu-resched.patch
@@ -0,0 +1,47 @@
+rcu: Avoid having just-onlined CPU resched itself when RCU is idle
+
+CPUs set rdp->qs_pending when coming online to resolve races with
+grace-period start.  However, this means that if RCU is idle, the
+just-onlined CPU might needlessly send itself resched IPIs.  Adjust
+the online-CPU initialization to avoid this, and also to correctly
+cause the CPU to respond to the current grace period if needed.
+
+Signed-off-by: Paul E. McKenney <paulmck at linux.vnet.ibm.com>
+---
+ kernel/rcutree.c |   13 +++++++++----
+ 1 files changed, 9 insertions(+), 4 deletions(-)
+
+diff --git a/kernel/rcutree.c b/kernel/rcutree.c
+index ba06207..472d6b2 100644
+--- a/kernel/rcutree.c
++++ b/kernel/rcutree.c
+@@ -1865,8 +1865,6 @@ rcu_init_percpu_data(int cpu, struct rcu_state *rsp, int preemptible)
+ 
+ 	/* Set up local state, ensuring consistent view of global state. */
+ 	raw_spin_lock_irqsave(&rnp->lock, flags);
+-	rdp->passed_quiesc = 0;  /* We could be racing with new GP, */
+-	rdp->qs_pending = 1;	 /*  so set up to respond to current GP. */
+ 	rdp->beenonline = 1;	 /* We have now been online. */
+ 	rdp->preemptible = preemptible;
+ 	rdp->qlen_last_fqs_check = 0;
+@@ -1891,8 +1889,15 @@ rcu_init_percpu_data(int cpu, struct rcu_state *rsp, int preemptible)
+ 		rnp->qsmaskinit |= mask;
+ 		mask = rnp->grpmask;
+ 		if (rnp == rdp->mynode) {
+-			rdp->gpnum = rnp->completed; /* if GP in progress... */
+-			rdp->completed = rnp->completed;
++			/*
++			 * If there is a grace period in progress, we will
++			 * set up to wait for it next time we run the
++			 * RCU core code.
++			 */
++			rdp->gpnum = rnp->completed;
++ 			rdp->completed = rnp->completed;
++			rdp->passed_quiesc = 0;
++			rdp->qs_pending = 0;
+ 			rdp->passed_quiesc_completed = rnp->completed - 1;
+ 		}
+ 		raw_spin_unlock(&rnp->lock); /* irqs already disabled. */
+-- 
+1.7.6
+
diff --git a/sources b/sources
index 380713b..e9feef6 100644
--- a/sources
+++ b/sources
@@ -1,3 +1,2 @@
 398e95866794def22b12dfbc15ce89c0  linux-3.0.tar.bz2
-9246c18f0f001dcb9a4c761541594655  patch-3.1-rc1.bz2
-ebb0b7c5b76a812f0e7f64e2b6bbc211  patch-3.1-rc1-git6.bz2
+f358c354ab6d3b0da1265b504f85ec50  patch-3.1-rc2.bz2


More information about the scm-commits mailing list