This patch should not make it to the stable kernel without a being
reviewed a lot more.  It is unclear how much a hardned kernel can
take when it comes to misconfigured apics.  So since a normal kernel
has problems this patch does a clean shutdown.

It is my expectation this patch will be dropped from future
generations of the kexec work.  But for the moment it is a 
crutch to keep from breaking everything.


Signed-off-by: Eric Biederman <[EMAIL PROTECTED]>
---

 crash.c |    7 +++++++
 1 files changed, 7 insertions(+)

diff -uNr 
linux-2.6.11-rc1-mm1-nokexec-x86-crash_shutdown-snapshot-registers/arch/i386/kernel/crash.c
 
linux-2.6.11-rc1-mm1-nokexec-x86-crash_shutdown-apic-shutdown/arch/i386/kernel/crash.c
--- 
linux-2.6.11-rc1-mm1-nokexec-x86-crash_shutdown-snapshot-registers/arch/i386/kernel/crash.c
 Tue Jan 18 23:15:34 2005
+++ 
linux-2.6.11-rc1-mm1-nokexec-x86-crash_shutdown-apic-shutdown/arch/i386/kernel/crash.c
      Tue Jan 18 23:15:50 2005
@@ -23,6 +23,7 @@
 #include <asm/hardirq.h>
 #include <asm/nmi.h>
 #include <asm/hw_irq.h>
+#include <asm/apic.h>
 #include <mach_ipi.h>
 
 #define MAX_NOTE_BYTES 1024
@@ -115,6 +116,7 @@
 {
        local_irq_disable();
        crash_save_this_cpu(regs, cpu);
+       disable_local_APIC();
        atomic_dec(&waiting_for_crash_ipi);
        /* Assume hlt works */
        __asm__("hlt");
@@ -153,6 +155,7 @@
        }
        
        /* Leave the nmi callback set */
+       disable_local_APIC();
 }
 #else
 static void nmi_shootdown_cpus(void)
@@ -174,5 +177,9 @@
        /* The kernel is broken so disable interrupts */
        local_irq_disable();
        nmi_shootdown_cpus();
+       lapic_shutdown();
+#if defined(CONFIG_X86_IO_APIC)
+       disable_IO_APIC();
+#endif
        crash_save_self();
 }
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to