]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
another softlockup patch for .23
authorGreg Kroah-Hartman <gregkh@suse.de>
Tue, 20 Nov 2007 17:16:37 +0000 (09:16 -0800)
committerGreg Kroah-Hartman <gregkh@suse.de>
Tue, 20 Nov 2007 17:16:37 +0000 (09:16 -0800)
queue-2.6.23/series
queue-2.6.23/softlockup-use-cpu_clock-instead-of-sched_clock.patch [new file with mode: 0644]

index ab0cbd8091da3b58ea40898a85d3016acbe0d997..61824216d6e9e1e37989f07d1b4725b95705f8b6 100644 (file)
@@ -23,3 +23,4 @@ x98-return-correct-error-code-from-child-rip.patch
 ntp-fix-sync-cmos-clock-typo.patch
 x86-fix-rtc-locking.patch
 softlockup-watchdog-fixes-and-cleanups.patch
+softlockup-use-cpu_clock-instead-of-sched_clock.patch
diff --git a/queue-2.6.23/softlockup-use-cpu_clock-instead-of-sched_clock.patch b/queue-2.6.23/softlockup-use-cpu_clock-instead-of-sched_clock.patch
new file mode 100644 (file)
index 0000000..56c67f6
--- /dev/null
@@ -0,0 +1,51 @@
+From a3b13c23f186ecb57204580cc1f2dbe9c284953a Mon Sep 17 00:00:00 2001
+From: Ingo Molnar <mingo@elte.hu>
+Date: Tue, 16 Oct 2007 23:26:06 -0700
+Subject: [PATCH] softlockup: use cpu_clock() instead of sched_clock()
+
+From: Ingo Molnar <mingo@elte.hu>
+
+patch a3b13c23f186ecb57204580cc1f2dbe9c284953a in mainline.
+
+sched_clock() is not a reliable time-source, use cpu_clock() instead.
+
+Signed-off-by: Ingo Molnar <mingo@elte.hu>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ kernel/softlockup.c |   10 ++++++----
+ 1 file changed, 6 insertions(+), 4 deletions(-)
+
+--- a/kernel/softlockup.c
++++ b/kernel/softlockup.c
+@@ -43,14 +43,16 @@ static struct notifier_block panic_block
+  * resolution, and we don't need to waste time with a big divide when
+  * 2^30ns == 1.074s.
+  */
+-static unsigned long get_timestamp(void)
++static unsigned long get_timestamp(int this_cpu)
+ {
+-      return sched_clock() >> 30;  /* 2^30 ~= 10^9 */
++      return cpu_clock(this_cpu) >> 30;  /* 2^30 ~= 10^9 */
+ }
+ void touch_softlockup_watchdog(void)
+ {
+-      __raw_get_cpu_var(touch_timestamp) = get_timestamp();
++      int this_cpu = raw_smp_processor_id();
++
++      __raw_get_cpu_var(touch_timestamp) = get_timestamp(this_cpu);
+ }
+ EXPORT_SYMBOL(touch_softlockup_watchdog);
+@@ -96,7 +98,7 @@ void softlockup_tick(void)
+               return;
+       }
+-      now = get_timestamp();
++      now = get_timestamp(this_cpu);
+       /* Wake up the high-prio watchdog task every second: */
+       if (now > (touch_timestamp + 1))