|
@@ -18,6 +18,7 @@
|
|
|
#include "hw/s390x/s390-pci-bus.h"
|
|
|
#include "hw/s390x/s390-pci-kvm.h"
|
|
|
#include "hw/s390x/s390-pci-inst.h"
|
|
|
+#include "hw/s390x/s390-pci-vfio.h"
|
|
|
#include "cpu_models.h"
|
|
|
|
|
|
bool s390_pci_kvm_interp_allowed(void)
|
|
@@ -64,6 +65,14 @@ int s390_pci_kvm_aif_disable(S390PCIBusDevice *pbdev)
|
|
|
return -EINVAL;
|
|
|
}
|
|
|
|
|
|
+ /*
|
|
|
+ * The device may have already been reset but we still want to relinquish
|
|
|
+ * the guest ISC, so always be sure to use an up-to-date host fh.
|
|
|
+ */
|
|
|
+ if (!s390_pci_get_host_fh(pbdev, &args.fh)) {
|
|
|
+ return -EPERM;
|
|
|
+ }
|
|
|
+
|
|
|
rc = kvm_vm_ioctl(kvm_state, KVM_S390_ZPCI_OP, &args);
|
|
|
if (rc == 0) {
|
|
|
pbdev->aif = false;
|