• Gleb Natapov's avatar
    KVM: VMX: handle IO when emulation is due to #GP in real mode. · 0ca1b4f4
    Gleb Natapov authored
    With emulate_invalid_guest_state=0 if a vcpu is in real mode VMX can
    enter the vcpu with smaller segment limit than guest configured.  If the
    guest tries to access pass this limit it will get #GP at which point
    instruction will be emulated with correct segment limit applied. If
    during the emulation IO is detected it is not handled correctly. Vcpu
    thread should exit to userspace to serve the IO, but it returns to the
    guest instead.  Since emulation is not completed till userspace completes
    the IO the faulty instruction is re-executed ad infinitum.
    
    The patch fixes that by exiting to userspace if IO happens during
    instruction emulation.
    Reported-by: default avatarAlex Williamson <alex.williamson@redhat.com>
    Signed-off-by: default avatarGleb Natapov <gleb@redhat.com>
    Signed-off-by: default avatarMarcelo Tosatti <mtosatti@redhat.com>
    0ca1b4f4
vmx.c 212 KB