]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
another .31 patch
authorGreg Kroah-Hartman <gregkh@suse.de>
Wed, 16 Dec 2009 18:56:27 +0000 (10:56 -0800)
committerGreg Kroah-Hartman <gregkh@suse.de>
Wed, 16 Dec 2009 18:56:27 +0000 (10:56 -0800)
queue-2.6.31/series
queue-2.6.31/x86-mce-set-up-timer-unconditionally.patch [new file with mode: 0644]

index fb66532fbb45a57cc39a308d4854216f8e88096f..57294956e97848e509f5bdb9e0b60af0f183363b 100644 (file)
@@ -66,3 +66,4 @@ sparc64-don-t-specify-irqf_shared-for-ldc-interrupts.patch
 sparc64-fix-overly-strict-range-type-matching-for-pci-devices.patch
 sparc64-fix-stack-debugging-irq-stack-regression.patch
 sparc-set-uts_machine-correctly.patch
+x86-mce-set-up-timer-unconditionally.patch
diff --git a/queue-2.6.31/x86-mce-set-up-timer-unconditionally.patch b/queue-2.6.31/x86-mce-set-up-timer-unconditionally.patch
new file mode 100644 (file)
index 0000000..a6f18e1
--- /dev/null
@@ -0,0 +1,43 @@
+From bc09effabf0c5c6c7021e5ef9af15a23579b32a8 Mon Sep 17 00:00:00 2001
+From: Jan Beulich <jbeulich@novell.com>
+Date: Tue, 8 Dec 2009 11:21:37 +0900
+Subject: x86/mce: Set up timer unconditionally
+
+From: Jan Beulich <jbeulich@novell.com>
+
+commit bc09effabf0c5c6c7021e5ef9af15a23579b32a8 upstream.
+
+mce_timer must be passed to setup_timer() in all cases, no
+matter whether it is going to be actually used. Otherwise, when
+the CPU gets brought down, its call to del_timer_sync() will
+never return, as the timer won't have a base associated, and
+hence lock_timer_base() will loop infinitely.
+
+Signed-off-by: Jan Beulich <jbeulich@novell.com>
+Signed-off-by: Hidetoshi Seto <seto.hidetoshi@jp.fujitsu.com>
+LKML-Reference: <4B1DB831.2030801@jp.fujitsu.com>
+Signed-off-by: Ingo Molnar <mingo@elte.hu>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ arch/x86/kernel/cpu/mcheck/mce.c |    3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+--- a/arch/x86/kernel/cpu/mcheck/mce.c
++++ b/arch/x86/kernel/cpu/mcheck/mce.c
+@@ -1327,13 +1327,14 @@ static void mce_init_timer(void)
+       struct timer_list *t = &__get_cpu_var(mce_timer);
+       int *n = &__get_cpu_var(next_interval);
++      setup_timer(t, mcheck_timer, smp_processor_id());
++
+       if (mce_ignore_ce)
+               return;
+       *n = check_interval * HZ;
+       if (!*n)
+               return;
+-      setup_timer(t, mcheck_timer, smp_processor_id());
+       t->expires = round_jiffies(jiffies + *n);
+       add_timer_on(t, smp_processor_id());
+ }