• Sean Christopherson's avatar
    KVM: selftests: complete IO before migrating guest state · 0f73bbc8
    Sean Christopherson authored
    Documentation/virtual/kvm/api.txt states:
    
      NOTE: For KVM_EXIT_IO, KVM_EXIT_MMIO, KVM_EXIT_OSI, KVM_EXIT_PAPR and
            KVM_EXIT_EPR the corresponding operations are complete (and guest
            state is consistent) only after userspace has re-entered the
            kernel with KVM_RUN.  The kernel side will first finish incomplete
            operations and then check for pending signals.  Userspace can
            re-enter the guest with an unmasked signal pending to complete
            pending operations.
    
    Because guest state may be inconsistent, starting state migration after
    an IO exit without first completing IO may result in test failures, e.g.
    a proposed change to KVM's handling of %rip in its fast PIO handling[1]
    will cause the new VM, i.e. the post-migration VM, to have its %rip set
    to the IN instruction that triggered KVM_EXIT_IO, leading to a test
    assertion due to a stage mismatch.
    
    For simplicitly, require KVM_CAP_IMMEDIATE_EXIT to complete IO and skip
    the test if it's not available.  The addition of KVM_CAP_IMMEDIATE_EXIT
    predates the state selftest by more than a year.
    
    [1] https://patchwork.kernel.org/patch/10848545/
    
    Fixes: fa3899ad ("kvm: selftests: add basic test for state save and restore")
    Reported-by: default avatarJim Mattson <jmattson@google.com>
    Signed-off-by: default avatarSean Christopherson <sean.j.christopherson@intel.com>
    Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
    0f73bbc8
kvm_util.h 6.14 KB