From: Joe Korty <joe.korty@ccur.com>

o Fix lockmeter under preemption (i386 only)

o Fix compile warnings in kernel/lockmeter.c



 25-akpm/arch/i386/Kconfig           |    2 +-
 25-akpm/include/asm-i386/spinlock.h |    2 ++
 25-akpm/kernel/lockmeter.c          |    1 +
 3 files changed, 4 insertions(+), 1 deletion(-)

diff -puN arch/i386/Kconfig~lockmeter-preemption-fixes arch/i386/Kconfig
--- 25/arch/i386/Kconfig~lockmeter-preemption-fixes	Thu Nov 20 13:33:12 2003
+++ 25-akpm/arch/i386/Kconfig	Thu Nov 20 13:33:12 2003
@@ -1252,7 +1252,7 @@ config DEBUG_INFO
 	  
 config LOCKMETER
 	bool "Kernel lock metering"
-	depends on SMP && !PREEMPT
+	depends on SMP
 	help
 	  Say Y to enable kernel lock metering, which adds overhead to SMP locks,
 	  but allows you to see various statistics using the lockstat command.
diff -puN include/asm-i386/spinlock.h~lockmeter-preemption-fixes include/asm-i386/spinlock.h
--- 25/include/asm-i386/spinlock.h~lockmeter-preemption-fixes	Thu Nov 20 13:33:12 2003
+++ 25-akpm/include/asm-i386/spinlock.h	Thu Nov 20 13:33:12 2003
@@ -270,10 +270,12 @@ repeat:
 	return 0;
 
 slow_path:
+	preempt_disable();
 	_metered_spin_lock(lock);
 	if (atomic_dec_and_test(atomic))
 		return 1;
 	_metered_spin_unlock(lock);
+	preempt_enable();
 	return 0;
 }
 
diff -puN kernel/lockmeter.c~lockmeter-preemption-fixes kernel/lockmeter.c
--- 25/kernel/lockmeter.c~lockmeter-preemption-fixes	Thu Nov 20 13:33:12 2003
+++ 25-akpm/kernel/lockmeter.c	Thu Nov 20 13:33:12 2003
@@ -23,6 +23,7 @@
 #include <linux/vmalloc.h>
 #include <linux/spinlock.h>
 #include <linux/utsname.h>
+#include <linux/module.h>
 #include <asm/system.h>
 #include <asm/uaccess.h>
 

_