The patch titled spinlock_debug: don't recompute (jiffies_per_loop applied-patches arch backup bin block config-x COPYING CREDITS CREDITS~git-gfs2 crypto CVS Documentation drivers fs include init ipc Kbuild kernel lib linus-series log mach MAINTAINERS MAINTAINERS~avr32-arch MAINTAINERS~edac-new-opteron-athlon64-memory-controller-driver MAINTAINERS~git-gfs2 MAINTAINERS~git-klibc MAINTAINERS.orig MAINTAINERS~origin MAINTAINERS~qla3xxx-NIC-driver MAINTAINERS~x86_64-mm-add-a-maintainers-entry-for-calgary Makefile Makefile~git-kbuild Makefile~git-klibc Makefile~mm Makefile.orig Makefile.rej mm net notes patches pc README REPORTING-BUGS scripts security series 'series sound Tags test.img txt usr HZ) in spinloop has been added to the -mm tree. Its filename is spinlock_debug-dont-recompute-jiffies_per_loop.patch See http://www.zip.com.au/~akpm/linux/patches/stuff/added-to-mm.txt to find out what to do about this ------------------------------------------------------ Subject: spinlock_debug: don't recompute (jiffies_per_loop applied-patches arch backup bin block config-x COPYING CREDITS CREDITS~git-gfs2 crypto CVS Documentation drivers fs include init ipc Kbuild kernel lib linus-series log mach MAINTAINERS MAINTAINERS~avr32-arch MAINTAINERS~edac-new-opteron-athlon64-memory-controller-driver MAINTAINERS~git-gfs2 MAINTAINERS~git-klibc MAINTAINERS.orig MAINTAINERS~origin MAINTAINERS~qla3xxx-NIC-driver MAINTAINERS~x86_64-mm-add-a-maintainers-entry-for-calgary Makefile Makefile~git-kbuild Makefile~git-klibc Makefile~mm Makefile.orig Makefile.rej mm net notes patches pc README REPORTING-BUGS scripts security series 'series sound Tags test.img txt usr HZ) in spinloop From: Chuck Ebbert <76306.1226@xxxxxxxxxxxxxx> 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@xxxxxxxxxxxxxx> Cc: Ingo Molnar <mingo@xxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxx> --- lib/spinlock_debug.c | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff -puN lib/spinlock_debug.c~spinlock_debug-dont-recompute-jiffies_per_loop lib/spinlock_debug.c --- a/lib/spinlock_debug.c~spinlock_debug-dont-recompute-jiffies_per_loop +++ a/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 @@ static void rwlock_bug(rwlock_t *lock, c #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); _ Patches currently in -mm which might be from 76306.1226@xxxxxxxxxxxxxx are ieee80211-tkip-requires-crc32.patch i386-print-stack-size-in-oops-messages.patch sleazy-fpu-feature-i386-support.patch i386-early-fault-handler.patch i386-fix-recursive-faults-during-oops-when-current.patch i386-show_registers-try-harder-to-print-failing.patch spinlock_debug-dont-recompute-jiffies_per_loop.patch - To unsubscribe from this list: send the line "unsubscribe mm-commits" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html