Add support for generating QEMU command line with 'x-scalable-mode=on,x-flts=on'. Signed-off-by: Zhenzhong Duan <zhenzhong.duan@intel.com> --- src/qemu/qemu_command.c | 2 ++ src/qemu/qemu_validate.c | 12 ++++++++++++ 2 files changed, 14 insertions(+) diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index 99c310cf31..6cd07d6f53 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -6338,6 +6338,8 @@ qemuBuildIOMMUCommandLine(virCommand *cmd, "T:device-iotlb", iommu->iotlb, "z:aw-bits", iommu->aw_bits, "T:dma-translation", iommu->dma_translation, + "T:x-scalable-mode", iommu->scalable_mode, + "T:x-flts", iommu->fsts, NULL) < 0) return -1; diff --git a/src/qemu/qemu_validate.c b/src/qemu/qemu_validate.c index da08fd17cd..c3739ac4b3 100644 --- a/src/qemu/qemu_validate.c +++ b/src/qemu/qemu_validate.c @@ -5683,6 +5683,18 @@ qemuValidateDomainDeviceDefIOMMU(const virDomainIOMMUDef *iommu, _("iommu: updating dma translation is not supported with this QEMU binary")); return -1; } + if (iommu->scalable_mode != VIR_TRISTATE_SWITCH_ABSENT && + !virQEMUCapsGet(qemuCaps, QEMU_CAPS_INTEL_IOMMU_SCALABLE_MODE)) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("iommu: x-scalable-mode is not supported with this QEMU binary")); + return -1; + } + if (iommu->fsts != VIR_TRISTATE_SWITCH_ABSENT && + !virQEMUCapsGet(qemuCaps, QEMU_CAPS_INTEL_IOMMU_FIRST_STAGE)) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("iommu: x-flts is not supported with this QEMU binary")); + return -1; + } return 0; } -- 2.47.3