From 37d0c6cfb5dced72873d5b14bd365dbf9780430c Mon Sep 17 00:00:00 2001 From: "H. Peter Anvin" Date: Thu, 21 Jun 2012 10:25:03 -0700 Subject: [PATCH] --- yaml --- r: 312444 b: refs/heads/master c: 9751d7627582fc1cc64625d63bde9528c14f1544 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/arch/x86/realmode/rm/reboot.S | 8 ++++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index ddbdd806ee54..aca38f351a1e 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 2b1b712f050eaf0ac576591281446dc960c0afc5 +refs/heads/master: 9751d7627582fc1cc64625d63bde9528c14f1544 diff --git a/trunk/arch/x86/realmode/rm/reboot.S b/trunk/arch/x86/realmode/rm/reboot.S index 6bf8feac5557..f932ea61d1c8 100644 --- a/trunk/arch/x86/realmode/rm/reboot.S +++ b/trunk/arch/x86/realmode/rm/reboot.S @@ -22,14 +22,18 @@ ENTRY(machine_real_restart_asm) #ifdef CONFIG_X86_64 + /* Switch to trampoline GDT as it is guaranteed < 4 GiB */ + movl $__KERNEL_DS, %eax + movl %eax, %ds + lgdtl pa_tr_gdt /* Disable paging to drop us out of long mode */ movl %cr0, %eax andl $~X86_CR0_PG, %eax movl %eax, %cr0 - jmp 1f /* "A branch" may be needed here, assume near is OK */ + ljmpl $__KERNEL32_CS, $pa_machine_real_restart_paging_off -1: +GLOBAL(machine_real_restart_paging_off) xorl %eax, %eax xorl %edx, %edx movl $MSR_EFER, %ecx