• Avi Kivity's avatar
    KVM: VMX: Save/restore rflags.vm correctly in real mode · 78ac8b47
    Avi Kivity authored
    Currently we set eflags.vm unconditionally when entering real mode emulation
    through virtual-8086 mode, and clear it unconditionally when we enter protected
    mode.  The means that the following sequence
    
      KVM_SET_REGS  (rflags.vm=1)
      KVM_SET_SREGS (cr0.pe=1)
    
    Ends up with rflags.vm clear due to KVM_SET_SREGS triggering enter_pmode().
    
    Fix by shadowing rflags.vm (and rflags.iopl) correctly while in real mode:
    reads and writes to those bits access a shadow register instead of the actual
    register.
    Signed-off-by: default avatarAvi Kivity <avi@redhat.com>
    Signed-off-by: default avatarMarcelo Tosatti <mtosatti@redhat.com>
    78ac8b47
vmx.c 109 KB