From: "Maciej W. Rozycki" Fix a kexec problem whcih causes local APIC detection failure. The problem is detect_init_APIC() is called early, before the command line have been processed. Therefore "lapic" (and "nolapic") have not been seen, yet. Signed-off-by: Maciej W. Rozycki Signed-off-by: Andrew Morton --- 25-akpm/arch/i386/kernel/apic.c | 25 +++++-------------------- 25-akpm/arch/i386/kernel/setup.c | 11 +++++++++++ 25-akpm/include/asm-i386/apic.h | 13 +++++++++++++ 3 files changed, 29 insertions(+), 20 deletions(-) diff -puN arch/i386/kernel/apic.c~x86-local-apic-fix arch/i386/kernel/apic.c --- 25/arch/i386/kernel/apic.c~x86-local-apic-fix 2004-12-03 20:56:52.828729000 -0800 +++ 25-akpm/arch/i386/kernel/apic.c 2004-12-03 20:56:52.834728088 -0800 @@ -41,6 +41,11 @@ #include "io_ports.h" /* + * Knob to control our willingness to enable the local APIC. + */ +int enable_local_apic __initdata = 0; /* -1=force-disable, +1=force-enable */ + +/* * Debug level */ int apic_verbosity; @@ -697,26 +702,6 @@ static void apic_pm_activate(void) { } * Original code written by Keir Fraser. */ -/* - * Knob to control our willingness to enable the local APIC. - */ -int enable_local_apic __initdata = 0; /* -1=force-disable, +1=force-enable */ - -static int __init lapic_disable(char *str) -{ - enable_local_apic = -1; - clear_bit(X86_FEATURE_APIC, boot_cpu_data.x86_capability); - return 0; -} -__setup("nolapic", lapic_disable); - -static int __init lapic_enable(char *str) -{ - enable_local_apic = 1; - return 0; -} -__setup("lapic", lapic_enable); - static int __init apic_set_verbosity(char *str) { if (strcmp("debug", str) == 0) diff -puN arch/i386/kernel/setup.c~x86-local-apic-fix arch/i386/kernel/setup.c --- 25/arch/i386/kernel/setup.c~x86-local-apic-fix 2004-12-03 20:56:52.829728848 -0800 +++ 25-akpm/arch/i386/kernel/setup.c 2004-12-03 20:56:52.836727784 -0800 @@ -40,6 +40,7 @@ #include #include #include