diff -r 2b8ef2e0e25f arch/i386/kernel/alternative.c --- a/arch/i386/kernel/alternative.c Mon Oct 16 02:30:58 2006 -0700 +++ b/arch/i386/kernel/alternative.c Mon Oct 16 02:34:29 2006 -0700 @@ -389,6 +389,7 @@ extern struct paravirt_patch *__start_pa void __init alternative_instructions(void) { + unsigned long flags; if (no_replacement) { printk(KERN_INFO "(SMP-)alternatives turned off\n"); free_init_pages("SMP alternatives", @@ -396,6 +397,8 @@ void __init alternative_instructions(voi (unsigned long)__smp_alt_end); return; } + + local_irq_save(flags); apply_alternatives(__alt_instructions, __alt_instructions_end); /* switch to patch-once-at-boottime-only mode and free the @@ -433,4 +436,5 @@ void __init alternative_instructions(voi alternatives_smp_switch(0); } #endif -} + local_irq_restore(flags); +}