[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen master] x86/EFI: be cautious about being handed control with CR4.PGE enabled
commit 9acb57de59ab544364d01f3871df510e63252720 Author: Jan Beulich <jbeulich@xxxxxxxx> AuthorDate: Fri Aug 19 17:04:03 2016 +0200 Commit: Jan Beulich <jbeulich@xxxxxxxx> CommitDate: Fri Aug 19 17:04:03 2016 +0200 x86/EFI: be cautious about being handed control with CR4.PGE enabled To effect proper TLB flushing in that case we should clear CR4.PGE before loading the new page tables. Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx> Reviewed-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> --- xen/arch/x86/efi/efi-boot.h | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/xen/arch/x86/efi/efi-boot.h b/xen/arch/x86/efi/efi-boot.h index 2ae4de1..10985721 100644 --- a/xen/arch/x86/efi/efi-boot.h +++ b/xen/arch/x86/efi/efi-boot.h @@ -228,7 +228,7 @@ static void __init efi_arch_pre_exit_boot(void) static void __init noreturn efi_arch_post_exit_boot(void) { - u64 efer; + u64 cr4 = XEN_MINIMAL_CR4 & ~X86_CR4_PGE, efer; efi_arch_relocate_image(__XEN_VIRT_START - xen_phys_start); memcpy((void *)trampoline_phys, trampoline_start, cfg.size); @@ -244,6 +244,10 @@ static void __init noreturn efi_arch_post_exit_boot(void) X86_CR0_AM | X86_CR0_PG); asm volatile ( "mov %[cr4], %%cr4\n\t" "mov %[cr3], %%cr3\n\t" +#if XEN_MINIMAL_CR4 & X86_CR4_PGE + "or $"__stringify(X86_CR4_PGE)", %[cr4]\n\t" + "mov %[cr4], %%cr4\n\t" +#endif "movabs $__start_xen, %[rip]\n\t" "lgdt gdt_descr(%%rip)\n\t" "mov stack_start(%%rip), %%rsp\n\t" @@ -255,9 +259,9 @@ static void __init noreturn efi_arch_post_exit_boot(void) "movl %[cs], 8(%%rsp)\n\t" "mov %[rip], (%%rsp)\n\t" "lretq %[stkoff]-16" - : [rip] "=&r" (efer/* any dead 64-bit variable */) + : [rip] "=&r" (efer/* any dead 64-bit variable */), + [cr4] "+&r" (cr4) : [cr3] "r" (idle_pg_table), - [cr4] "r" (mmu_cr4_features), [cs] "ir" (__HYPERVISOR_CS), [ds] "r" (__HYPERVISOR_DS), [stkoff] "i" (STACK_SIZE - sizeof(struct cpu_info)), -- generated by git-patchbot for /home/xen/git/xen.git#master _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxx https://lists.xenproject.org/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |