diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index c3931b67445db9e607001a99ed467496cfd6d2eb..4a430ddfbac059e69047afed1981f638340f183a 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -5422,18 +5422,6 @@ qemuBuildHostdevCommandLine(virCommandPtr cmd, virDomainHostdevSubsysPtr subsys = &hostdev->source.subsys; VIR_AUTOFREE(char *) devstr = NULL; - if (hostdev->info->bootIndex) { - if (hostdev->mode != VIR_DOMAIN_HOSTDEV_MODE_SUBSYS || - (subsys->type != VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_PCI && - subsys->type != VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_USB && - subsys->type != VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI)) { - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", - _("booting from assigned devices is only " - "supported for PCI, USB and SCSI devices")); - return -1; - } - } - /* USB */ if (hostdev->mode == VIR_DOMAIN_HOSTDEV_MODE_SUBSYS && subsys->type == VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_USB) { diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c index d0722f8761b108278f6ef5a34ec5ac5c088cb94e..ed3a8a4f0724ba526ae90ac469fea955838b6cac 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -5295,9 +5295,22 @@ qemuDomainDeviceDefValidateHostdev(const virDomainHostdevDef *hostdev, case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_USB: case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_PCI: case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI: + break; case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI_HOST: + if (hostdev->info->bootIndex) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("booting from assigned devices is only " + "supported for PCI, USB and SCSI devices")); + return -1; + } break; case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_MDEV: + if (hostdev->info->bootIndex) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("booting from assigned devices is only " + "supported for PCI, USB and SCSI devices")); + return -1; + } mdevsrc = &hostdev->source.subsys.u.mdev; return qemuDomainMdevDefValidate(mdevsrc, def, qemuCaps); case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_LAST: diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c index e5191a4cdc37d7409ae5055420b0b1a0af0ac376..59be85613e13d96738f4c7032a0301ced2eacc11 100644 --- a/tests/qemuxml2argvtest.c +++ b/tests/qemuxml2argvtest.c @@ -1639,8 +1639,8 @@ mymain(void) DO_TEST_CAPS_ARCH_LATEST("hostdev-subsys-mdev-vfio-ap", "s390x"); - DO_TEST_CAPS_ARCH_LATEST_FAILURE("hostdev-subsys-mdev-vfio-ap-boot-fail", - "s390x"); + DO_TEST_CAPS_ARCH_LATEST_PARSE_ERROR("hostdev-subsys-mdev-vfio-ap-boot-fail", + "s390x"); DO_TEST_FULL("restore-v2", ARG_MIGRATE_FROM, "exec:cat", @@ -2444,7 +2444,7 @@ mymain(void) DO_TEST("hostdev-scsi-vhost-scsi-pci", QEMU_CAPS_VIRTIO_SCSI, QEMU_CAPS_DEVICE_VHOST_SCSI); - DO_TEST_CAPS_LATEST_FAILURE("hostdev-scsi-vhost-scsi-pci-boot-fail"); + DO_TEST_CAPS_LATEST_PARSE_ERROR("hostdev-scsi-vhost-scsi-pci-boot-fail"); DO_TEST("hostdev-scsi-vhost-scsi-pcie", QEMU_CAPS_KVM, QEMU_CAPS_VIRTIO_SCSI, QEMU_CAPS_DEVICE_VHOST_SCSI,