[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <4B162A3C0200007800022F98@vpn.id2.novell.com>
Date: Wed, 02 Dec 2009 07:50:04 +0000
From: "Jan Beulich" <JBeulich@...ell.com>
To: <mingo@...e.hu>, <tglx@...utronix.de>, <hpa@...or.com>
Cc: <stable@...nel.org>, <linux-kernel@...r.kernel.org>
Subject: [PATCH] x86/mce: timer must be setup unconditionally
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.
(Patch applying to -tip is attached.)
Signed-off-by: Jan Beulich <jbeulich@...ell.com>
Cc: <stable@...nel.org>
---
arch/x86/kernel/cpu/mcheck/mce.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
--- linux-2.6.32-rc8/arch/x86/kernel/cpu/mcheck/mce.c
+++ 2.6.32-rc8-x86-mce-setup-timer-always/arch/x86/kernel/cpu/mcheck/mce.c
@@ -1374,13 +1374,14 @@ static void mce_init_timer(void)
struct timer_list *t = &__get_cpu_var(mce_timer);
int *n = &__get_cpu_var(mce_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());
}
View attachment "linux-tip-x86-mce-setup-timer-always.patch" of type "text/plain" (986 bytes)
Powered by blists - more mailing lists