|
@@ -415,9 +415,6 @@ void __init alternative_instructions(void)
|
|
|
alternatives_smp_unlock(__smp_locks, __smp_locks_end,
|
|
|
_text, _etext);
|
|
|
}
|
|
|
- free_init_pages("SMP alternatives",
|
|
|
- (unsigned long)__smp_locks,
|
|
|
- (unsigned long)__smp_locks_end);
|
|
|
} else {
|
|
|
alternatives_smp_module_add(NULL, "core kernel",
|
|
|
__smp_locks, __smp_locks_end,
|
|
@@ -428,6 +425,11 @@ void __init alternative_instructions(void)
|
|
|
apply_paravirt(__parainstructions, __parainstructions_end);
|
|
|
local_irq_restore(flags);
|
|
|
|
|
|
+ if (smp_alt_once)
|
|
|
+ free_init_pages("SMP alternatives",
|
|
|
+ (unsigned long)__smp_locks,
|
|
|
+ (unsigned long)__smp_locks_end);
|
|
|
+
|
|
|
restart_nmi();
|
|
|
#ifdef CONFIG_X86_MCE
|
|
|
restart_mce();
|