From: Jason Baron arch_init_ideal_nop5() was being called from setup_arch() before the exception table was setup. Move it later into alternative_instructions(). Fixes a boot hang on OLPC's XO-1 laptop based on Geode LX processor. Reported-by: Daniel Drake Signed-off-by: Jason Baron LKML-Reference: <20101004154633.GA2900@redhat.com> Signed-off-by: Steven Rostedt --- arch/x86/kernel/alternative.c | 5 +++++ arch/x86/kernel/setup.c | 6 ------ 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/arch/x86/kernel/alternative.c b/arch/x86/kernel/alternative.c index cb0e6d3..d8b5b21 100644 --- a/arch/x86/kernel/alternative.c +++ b/arch/x86/kernel/alternative.c @@ -454,6 +454,7 @@ extern struct paravirt_patch_site __start_parainstructions[], void __init alternative_instructions(void) { + unsigned long flags; /* The patching is not fully atomic, so try to avoid local interruptions that might execute the to be patched code. Other CPUs are not running. */ @@ -508,6 +509,10 @@ void __init alternative_instructions(void) (unsigned long)__smp_locks_end); restart_nmi(); + + local_irq_save(flags); + arch_init_ideal_nop5(); + local_irq_restore(flags); } /** diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c index 00e1678..c3a4fbb 100644 --- a/arch/x86/kernel/setup.c +++ b/arch/x86/kernel/setup.c @@ -112,7 +112,6 @@ #include #endif #include -#include /* * end_pfn only includes RAM, while max_pfn_mapped includes all e820 entries. @@ -727,7 +726,6 @@ void __init setup_arch(char **cmdline_p) { int acpi = 0; int k8 = 0; - unsigned long flags; #ifdef CONFIG_X86_32 memcpy(&boot_cpu_data, &new_cpu_data, sizeof(new_cpu_data)); @@ -1073,10 +1071,6 @@ void __init setup_arch(char **cmdline_p) x86_init.oem.banner(); mcheck_init(); - - local_irq_save(flags); - arch_init_ideal_nop5(); - local_irq_restore(flags); } #ifdef CONFIG_X86_32 -- 1.7.1 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/