]> git.hungrycats.org Git - linux/commitdiff
[PATCH] x86-64: remove WARN_ON in smp_call_function
authorAndi Kleen <ak@muc.de>
Fri, 17 Sep 2004 05:01:06 +0000 (22:01 -0700)
committerLinus Torvalds <torvalds@ppc970.osdl.org>
Fri, 17 Sep 2004 05:01:06 +0000 (22:01 -0700)
Remove WARN_ON in smp_call_function. it breaks the machine check
handling and there is no good way to enable interrupts here.

 Call Trace:<ffffffff8011cb33>{smp_call_function+115} <ffffffff8011cbf9>{smp_send_stop+25}
 <ffffffff80138012>{panic+274} <ffffffff801187e0>{do_machine_check+0}
 <ffffffff80118c3a>{do_machine_check+1114} <ffffffff80111663>{machine_check+127}
 <ffffffff803434d7>{net_rx_action+215}  <EOE> <IRQ> <ffffffff8013c8e3>{__do_softirq+83}
   <ffffffff8013c975>{do_softirq+53} <ffffffff80113cdd>{do_IRQ+317}
 <<ffffffff8010f3b0>{default_idle+0} <ffffffff80110b81>{ret_from_intr+0}
     <EOI> <ffffffff8010f3d0>{default_idle+32} <ffffffff8010f86a>{cpu_idle+26}
  <ffffffff8058f886>{start_kernel+502} <ffffffff8058f1e0>{_sinittext+48

Signed-off-by: Andi Kleen <ak@suse.de>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
arch/x86_64/kernel/smp.c

index 409460ebc1749d694bc729e527ee3ec45ccd9470..e9b7732176c49f3bf067a69de436b661948de4ed 100644 (file)
@@ -396,6 +396,7 @@ int smp_call_function (void (*func) (void *info), void *info, int nonatomic,
  *
  * You must not call this function with disabled interrupts or from a
  * hardware interrupt handler or from a bottom half handler.
+ * Actually there are a few legal cases, like panic.
  */
 {
        struct call_data_struct data;
@@ -404,9 +405,6 @@ int smp_call_function (void (*func) (void *info), void *info, int nonatomic,
        if (!cpus)
                return 0;
 
-       /* Can deadlock when called with interrupts disabled */
-       WARN_ON(irqs_disabled());
-
        data.func = func;
        data.info = info;
        atomic_set(&data.started, 0);