• Paolo Bonzini's avatar
    KVM: x86: never trap MSR_KERNEL_GS_BASE · 4679b61f
    Paolo Bonzini authored
    KVM has an old optimization whereby accesses to the kernel GS base MSR
    are trapped when the guest is in 32-bit and not when it is in 64-bit mode.
    The idea is that swapgs is not available in 32-bit mode, thus the
    guest has no reason to access the MSR unless in 64-bit mode and
    32-bit applications need not pay the price of switching the kernel GS
    base between the host and the guest values.
    
    However, this optimization adds complexity to the code for little
    benefit (these days most guests are going to be 64-bit anyway) and in fact
    broke after commit 678e315e ("KVM: vmx: add dedicated utility to
    access guest's kernel_gs_base", 2018-08-06); the guest kernel GS base
    can be corrupted across SMIs and UEFI Secure Boot is therefore broken
    (a secure boot Linux guest, for example, fails to reach the login prompt
    about half the time).  This patch just removes the optimization; the
    kernel GS base MSR is now never trapped by KVM, similarly to the FS and
    GS base MSRs.
    
    Fixes: 678e315eReviewed-by: default avatarSean Christopherson <sean.j.christopherson@intel.com>
    Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
    4679b61f
vmx.c 402 KB