• Paolo Bonzini's avatar
    KVM: x86: fix RSM into 64-bit protected mode · b10d92a5
    Paolo Bonzini authored
    In order to get into 64-bit protected mode, you need to enable
    paging while EFER.LMA=1.  For this to work, CS.L must be 0.
    Currently, we load the segments before CR0 and CR4, which means
    that if RSM returns into 64-bit protected mode CS.L is already 1
    and everything breaks.
    
    Luckily, CS.L=0 is always the case when executing RSM, because it
    is forbidden to execute RSM from 64-bit protected mode.  Hence it
    is enough to load CR0 and CR4 first, and only then the segments.
    
    Fixes: 660a5d51
    Cc: stable@vger.kernel.org
    Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
    b10d92a5
emulate.c 141 KB