aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86/kernel
diff options
context:
space:
mode:
authorJarkko Sakkinen <jarkko.sakkinen@intel.com>2012-05-08 14:22:40 -0400
committerH. Peter Anvin <hpa@linux.intel.com>2012-05-08 14:48:11 -0400
commit8e029fcdd8702719c9179317cae9ef84ebe7027e (patch)
tree12140b7331764ff0e0cd4e0d7bd290453d51110f /arch/x86/kernel
parent6feb592dceaed1a6cf26c9747b1180958d5156cd (diff)
x86, realmode: fix 64-bit wakeup sequence
There were number of issues in wakeup sequence: - Wakeup stack was placed in hardcoded address. - NX bit in EFER was not enabled. - Initialization incorrectly set physical address of secondary_startup_64. - Some alignment issues. This patch fixes these issues and in addition: - Unifies coding conventions in .S files. - Sets alignments of code and data right. Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen@intel.com> Link: http://lkml.kernel.org/r/1336501366-28617-18-git-send-email-jarkko.sakkinen@intel.com Originally-by: H. Peter Anvin <hpa@linux.intel.com> Cc: Rafael J. Wysocki <rjw@sisk.pl> Cc: Len Brown <len.brown@intel.com> Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
Diffstat (limited to 'arch/x86/kernel')
-rw-r--r--arch/x86/kernel/realmode.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/arch/x86/kernel/realmode.c b/arch/x86/kernel/realmode.c
index d85ac20bb4e..e7bf82a409b 100644
--- a/arch/x86/kernel/realmode.c
+++ b/arch/x86/kernel/realmode.c
@@ -64,7 +64,7 @@ void __init setup_real_mode(void)
64 *((u32 *)__va(real_mode_header.boot_gdt)) = __pa(boot_gdt); 64 *((u32 *)__va(real_mode_header.boot_gdt)) = __pa(boot_gdt);
65#else 65#else
66 *((u64 *) __va(real_mode_header.startup_64_smp)) = 66 *((u64 *) __va(real_mode_header.startup_64_smp)) =
67 (u64) __pa(secondary_startup_64); 67 (u64)secondary_startup_64;
68 68
69 *((u64 *) __va(real_mode_header.level3_ident_pgt)) = 69 *((u64 *) __va(real_mode_header.level3_ident_pgt)) =
70 __pa(level3_ident_pgt) + _KERNPG_TABLE; 70 __pa(level3_ident_pgt) + _KERNPG_TABLE;