rpms/kernel/devel kernel-2.6.spec, 1.2727, 1.2728 linux-2.6-optimise-spinlock-debug.patch, 1.3, 1.4

fedora-cvs-commits at redhat.com fedora-cvs-commits at redhat.com
Tue Oct 3 17:54:19 UTC 2006


Author: davej

Update of /cvs/dist/rpms/kernel/devel
In directory cvs.devel.redhat.com:/tmp/cvs-serv30468

Modified Files:
	kernel-2.6.spec linux-2.6-optimise-spinlock-debug.patch 
Log Message:
Optimise spinlock debug some more.


Index: kernel-2.6.spec
===================================================================
RCS file: /cvs/dist/rpms/kernel/devel/kernel-2.6.spec,v
retrieving revision 1.2727
retrieving revision 1.2728
diff -u -r1.2727 -r1.2728
--- kernel-2.6.spec	3 Oct 2006 17:32:53 -0000	1.2727
+++ kernel-2.6.spec	3 Oct 2006 17:54:17 -0000	1.2728
@@ -1976,6 +1976,7 @@
 %changelog
 * Tue Oct  3 2006 Dave Jones <davej at redhat.com>
 - Numerous stack unwinder fixes.
+- Optimise spinlock debug some more.
 
 * Tue Oct  3 2006 David Woodhouse <dwmw2 at redhat.com>
 - Fix PCMCIA serial port suspend/resume

linux-2.6-optimise-spinlock-debug.patch:
 b/lib/spinlock_debug.c            |   15 +++++++++------
 linux-2.6.16/lib/spinlock_debug.c |    3 ---
 2 files changed, 9 insertions(+), 9 deletions(-)

Index: linux-2.6-optimise-spinlock-debug.patch
===================================================================
RCS file: /cvs/dist/rpms/kernel/devel/linux-2.6-optimise-spinlock-debug.patch,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- linux-2.6-optimise-spinlock-debug.patch	11 Jun 2006 23:37:27 -0000	1.3
+++ linux-2.6-optimise-spinlock-debug.patch	3 Oct 2006 17:54:17 -0000	1.4
@@ -26,3 +26,75 @@
  		/* lockup suspected: */
  		if (print_once) {
 
+
+commit c22f008ba226e2ff25ee1a56abd9c5fd355828fc
+tree ffa01da1cf0dec73de897889a1aa5f354f521df1
+parent 92a0f861fe1790dad55ea249169d94f2dc88d696
+author Chuck Ebbert <76306.1226 at compuserve.com> 1159520354 -0700
+committer Linus Torvalds <torvalds at g5.osdl.org> 1159546686 -0700
+
+[PATCH] spinlock_debug: don't recompute (jiffies_per_loop * HZ) in spinloop
+
+In spinlock_debug.c, the spinloops call __delay() on every iteration.
+Because that is an external function, (jiffies_per_loop * HZ), the loop's
+iteration limit, gets recomputed every time.  Caching it explicitly
+prevents that.
+
+Signed-off-by: Chuck Ebbert <76306.1226 at compuserve.com>
+Cc: Ingo Molnar <mingo at elte.hu>
+Signed-off-by: Andrew Morton <akpm at osdl.org>
+Signed-off-by: Linus Torvalds <torvalds at osdl.org>
+
+ lib/spinlock_debug.c |   15 +++++++++------
+ 1 file changed, 9 insertions(+), 6 deletions(-)
+
+diff --git a/lib/spinlock_debug.c b/lib/spinlock_debug.c
+index 58c577d..dafaf1d 100644
+--- a/lib/spinlock_debug.c
++++ b/lib/spinlock_debug.c
+@@ -99,11 +99,12 @@ static inline void debug_spin_unlock(spi
+ 
+ static void __spin_lock_debug(spinlock_t *lock)
+ {
+-	int print_once = 1;
+ 	u64 i;
++	u64 loops = loops_per_jiffy * HZ;
++	int print_once = 1;
+ 
+ 	for (;;) {
+-		for (i = 0; i < loops_per_jiffy * HZ; i++) {
++		for (i = 0; i < loops; i++) {
+ 			if (__raw_spin_trylock(&lock->raw_lock))
+ 				return;
+ 			__delay(1);
+@@ -165,11 +166,12 @@ #define RWLOCK_BUG_ON(cond, lock, msg) i
+ #if 0		/* __write_lock_debug() can lock up - maybe this can too? */
+ static void __read_lock_debug(rwlock_t *lock)
+ {
+-	int print_once = 1;
+ 	u64 i;
++	u64 loops = loops_per_jiffy * HZ;
++	int print_once = 1;
+ 
+ 	for (;;) {
+-		for (i = 0; i < loops_per_jiffy * HZ; i++) {
++		for (i = 0; i < loops; i++) {
+ 			if (__raw_read_trylock(&lock->raw_lock))
+ 				return;
+ 			__delay(1);
+@@ -239,11 +241,12 @@ static inline void debug_write_unlock(rw
+ #if 0		/* This can cause lockups */
+ static void __write_lock_debug(rwlock_t *lock)
+ {
+-	int print_once = 1;
+ 	u64 i;
++	u64 loops = loops_per_jiffy * HZ;
++	int print_once = 1;
+ 
+ 	for (;;) {
+-		for (i = 0; i < loops_per_jiffy * HZ; i++) {
++		for (i = 0; i < loops; i++) {
+ 			if (__raw_write_trylock(&lock->raw_lock))
+ 				return;
+ 			__delay(1);
+




More information about the fedora-cvs-commits mailing list