All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] x86/mce: timer must be setup unconditionally
@ 2009-12-02  7:50 Jan Beulich
  2009-12-02  8:47 ` Hidetoshi Seto
  2009-12-08  2:21 ` Hidetoshi Seto
  0 siblings, 2 replies; 9+ messages in thread
From: Jan Beulich @ 2009-12-02  7:50 UTC (permalink / raw)
  To: mingo, tglx, hpa; +Cc: stable, linux-kernel

[-- Attachment #1: Type: text/plain, Size: 1104 bytes --]

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@novell.com>
Cc: <stable@kernel.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());
 }




[-- Attachment #2: linux-tip-x86-mce-setup-timer-always.patch --]
[-- Type: text/plain, Size: 1016 bytes --]

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>
Cc: <stable@kernel.org>

---
 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
@@ -1388,13 +1388,14 @@ static void __mcheck_cpu_init_timer(
 	struct timer_list *t = &__get_cpu_var(mce_timer);
 	int *n = &__get_cpu_var(mce_next_interval);
 
+	setup_timer(t, mce_start_timer, smp_processor_id());
+
 	if (mce_ignore_ce)
 		return;
 
 	*n = check_interval * HZ;
 	if (!*n)
 		return;
-	setup_timer(t, mce_start_timer, smp_processor_id());
 	t->expires = round_jiffies(jiffies + *n);
 	add_timer_on(t, smp_processor_id());
 }

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2009-12-08 11:31 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-12-02  7:50 [PATCH] x86/mce: timer must be setup unconditionally Jan Beulich
2009-12-02  8:47 ` Hidetoshi Seto
2009-12-02  8:53   ` Jan Beulich
2009-12-03  2:31     ` Hidetoshi Seto
2009-12-08  2:21 ` Hidetoshi Seto
2009-12-08  3:14   ` Ingo Molnar
2009-12-08  3:33     ` Hidetoshi Seto
2009-12-08  3:44     ` H. Peter Anvin
2009-12-08 11:31   ` [tip:x86/urgent] x86/mce: Set up timer unconditionally tip-bot for Jan Beulich

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.