[PATCH 0/3] Intel-IOMMU: Add dma-translation switch

Since Qemu commit 8646d9c (Support IR-only mode without DMA translation) version 7.1.0, Qemu support dma-translation attribute for Intel IOMMU. This patch adds a new attribute dma_translation to configure this. Sandesh Patel (3): Conf: add dma_translation attribute to iommu qemu: format dma-translation on intel-iommu command line tests: add test for intel-iommu dma-translation attribute docs/formatdomain.rst | 7 ++++ src/conf/domain_conf.c | 15 ++++++++ src/conf/domain_conf.h | 1 + src/conf/schemas/domaincommon.rng | 5 +++ src/qemu/qemu_capabilities.c | 2 + src/qemu/qemu_capabilities.h | 1 + src/qemu/qemu_command.c | 1 + src/qemu/qemu_validate.c | 6 +++ .../caps_7.1.0_x86_64.xml | 1 + .../caps_7.2.0_x86_64+hvf.xml | 1 + .../caps_7.2.0_x86_64.xml | 1 + .../caps_8.0.0_x86_64.xml | 1 + .../caps_8.1.0_x86_64.xml | 1 + .../caps_8.2.0_x86_64.xml | 1 + .../caps_9.0.0_x86_64.xml | 1 + .../caps_9.1.0_x86_64.xml | 1 + .../migration-out-nbd-bitmaps-in.xml | 1 + ...l-iommu-dma-translation.x86_64-latest.args | 34 +++++++++++++++++ ...el-iommu-dma-translation.x86_64-latest.xml | 1 + .../intel-iommu-dma-translation.xml | 37 +++++++++++++++++++ tests/qemuxmlconftest.c | 1 + 21 files changed, 120 insertions(+) create mode 100644 tests/qemuxmlconfdata/intel-iommu-dma-translation.x86_64-latest.args create mode 120000 tests/qemuxmlconfdata/intel-iommu-dma-translation.x86_64-latest.xml create mode 100644 tests/qemuxmlconfdata/intel-iommu-dma-translation.xml -- 2.22.3

Add dma_translation attribute to iommu to enable/disable dma traslation for intel-iommu Signed-off-by: Sandesh Patel <sandesh.patel@nutanix.com> --- docs/formatdomain.rst | 7 +++++++ src/conf/domain_conf.c | 15 +++++++++++++++ src/conf/domain_conf.h | 1 + src/conf/schemas/domaincommon.rng | 5 +++++ 4 files changed, 28 insertions(+) diff --git a/docs/formatdomain.rst b/docs/formatdomain.rst index c56b739b23..a037ab65e4 100644 --- a/docs/formatdomain.rst +++ b/docs/formatdomain.rst @@ -8611,6 +8611,13 @@ Example: mapping larger iova addresses in the guest. :since:`Since 6.5.0` (QEMU/KVM only) + ``dma_translation`` + The ``dma_translation`` attribute with possible values ``on`` and ``off`` can + be used to turn off the dma translation for IOMMU. It is useful when only + interrupt remapping is required but dma translation overhead is unwanted, for + example to efficiently enable more than 255 vCPUs. + :since:`Since 10.6.1` (QEMU/KVM only) + The ``virtio`` IOMMU devices can further have ``address`` element as described in `Device addresses`_ (address has to by type of ``pci``). diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 86b563fbfb..d950921667 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -13931,6 +13931,10 @@ virDomainIOMMUDefParseXML(virDomainXMLOption *xmlopt, if (virXMLPropUInt(driver, "aw_bits", 10, VIR_XML_PROP_NONE, &iommu->aw_bits) < 0) return NULL; + + if (virXMLPropTristateSwitch(driver, "dma_translation", VIR_XML_PROP_NONE, + &iommu->dma_translation) < 0) + return NULL; } if (virDomainDeviceInfoParseXML(xmlopt, node, ctxt, @@ -21467,6 +21471,13 @@ virDomainIOMMUDefCheckABIStability(virDomainIOMMUDef *src, dst->aw_bits, src->aw_bits); return false; } + if (src->dma_translation != dst->dma_translation) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, + _("Target domain IOMMU device dma translation '%1$s' does not match source '%2$s'"), + virTristateSwitchTypeToString(dst->dma_translation), + virTristateSwitchTypeToString(src->dma_translation)); + return false; + } return virDomainDeviceInfoCheckABIStability(&src->info, &dst->info); } @@ -27451,6 +27462,10 @@ virDomainIOMMUDefFormat(virBuffer *buf, virBufferAsprintf(&driverAttrBuf, " aw_bits='%d'", iommu->aw_bits); } + if (iommu->dma_translation != VIR_TRISTATE_SWITCH_ABSENT) { + virBufferAsprintf(&driverAttrBuf, " dma_translation='%s'", + virTristateSwitchTypeToString(iommu->dma_translation)); + } virXMLFormatElement(&childBuf, "driver", &driverAttrBuf, NULL); diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index 95ddf5470e..eae621f900 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -2928,6 +2928,7 @@ struct _virDomainIOMMUDef { virTristateSwitch iotlb; unsigned int aw_bits; virDomainDeviceInfo info; + virTristateSwitch dma_translation; }; typedef enum { diff --git a/src/conf/schemas/domaincommon.rng b/src/conf/schemas/domaincommon.rng index 7d58dce465..05ba697924 100644 --- a/src/conf/schemas/domaincommon.rng +++ b/src/conf/schemas/domaincommon.rng @@ -6100,6 +6100,11 @@ <ref name="uint8"/> </attribute> </optional> + <optional> + <attribute name="dma_translation"> + <ref name="virOnOff"/> + </attribute> + </optional> </element> </optional> <optional> -- 2.22.3

On 8/7/24 09:37, Sandesh Patel wrote:
Add dma_translation attribute to iommu to enable/disable dma traslation for intel-iommu
Signed-off-by: Sandesh Patel <sandesh.patel@nutanix.com> --- docs/formatdomain.rst | 7 +++++++ src/conf/domain_conf.c | 15 +++++++++++++++ src/conf/domain_conf.h | 1 + src/conf/schemas/domaincommon.rng | 5 +++++ 4 files changed, 28 insertions(+)
diff --git a/docs/formatdomain.rst b/docs/formatdomain.rst index c56b739b23..a037ab65e4 100644 --- a/docs/formatdomain.rst +++ b/docs/formatdomain.rst @@ -8611,6 +8611,13 @@ Example: mapping larger iova addresses in the guest. :since:`Since 6.5.0` (QEMU/KVM only)
+ ``dma_translation`` + The ``dma_translation`` attribute with possible values ``on`` and ``off`` can + be used to turn off the dma translation for IOMMU. It is useful when only + interrupt remapping is required but dma translation overhead is unwanted, for + example to efficiently enable more than 255 vCPUs. + :since:`Since 10.6.1` (QEMU/KVM only)
This must be 10.7.0. The micro is reserved for maintenance releases (which we don't really do anymore). https://libvirt.org/downloads.html#release-numbering Oh, and we often put xml2xml testcase here to prove parsing & formatting works. This also drags in xml2cmd testcase, but that's okay. In fact, it makes it more obvious how cmd line is changed once we start generating it (patch 3/3). Michal

Add dma-translation attribute to qemu command line if specified in domain conf. Signed-off-by: Sandesh Patel <sandesh.patel@nutanix.com> --- src/qemu/qemu_capabilities.c | 2 ++ src/qemu/qemu_capabilities.h | 1 + src/qemu/qemu_command.c | 1 + src/qemu/qemu_validate.c | 6 ++++++ 4 files changed, 10 insertions(+) diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index 29dfe8d35a..2f66a49711 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -713,6 +713,7 @@ VIR_ENUM_IMPL(virQEMUCaps, "sev-snp-guest", /* QEMU_CAPS_SEV_SNP_GUEST */ "netdev.user", /* QEMU_CAPS_NETDEV_USER */ "acpi-erst", /* QEMU_CAPS_DEVICE_ACPI_ERST */ + "intel-iommu.dma-translation", /* QEMU_CAPS_INTEL_IOMMU_DMA_TRANSLATION */ ); @@ -1516,6 +1517,7 @@ static struct virQEMUCapsDevicePropsFlags virQEMUCapsDevicePropsIntelIOMMU[] = { { "eim", QEMU_CAPS_INTEL_IOMMU_EIM, NULL }, { "device-iotlb", QEMU_CAPS_INTEL_IOMMU_DEVICE_IOTLB, NULL }, { "aw-bits", QEMU_CAPS_INTEL_IOMMU_AW_BITS, NULL }, + { "dma-translation", QEMU_CAPS_INTEL_IOMMU_DMA_TRANSLATION, NULL }, }; static struct virQEMUCapsDevicePropsFlags virQEMUCapsDevicePropsMCH[] = { diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h index 51d951771d..edeb870e01 100644 --- a/src/qemu/qemu_capabilities.h +++ b/src/qemu/qemu_capabilities.h @@ -692,6 +692,7 @@ typedef enum { /* virQEMUCapsFlags grouping marker for syntax-check */ QEMU_CAPS_SEV_SNP_GUEST, /* -object sev-snp-guest */ QEMU_CAPS_NETDEV_USER, /* -netdev user */ QEMU_CAPS_DEVICE_ACPI_ERST, /* -device acpi-erst */ + QEMU_CAPS_INTEL_IOMMU_DMA_TRANSLATION, /* intel-iommu.dma-translation */ QEMU_CAPS_LAST /* this must always be the last item */ } virQEMUCapsFlags; diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index f15e6bda1e..28914c9c34 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -6209,6 +6209,7 @@ qemuBuildIOMMUCommandLine(virCommand *cmd, "S:eim", qemuOnOffAuto(iommu->eim), "T:device-iotlb", iommu->iotlb, "z:aw-bits", iommu->aw_bits, + "T:dma-translation", iommu->dma_translation, NULL) < 0) return -1; diff --git a/src/qemu/qemu_validate.c b/src/qemu/qemu_validate.c index 0e8f0f977f..b885fe7c77 100644 --- a/src/qemu/qemu_validate.c +++ b/src/qemu/qemu_validate.c @@ -5094,6 +5094,12 @@ qemuValidateDomainDeviceDefIOMMU(const virDomainIOMMUDef *iommu, _("iommu: aw_bits is not supported with this QEMU binary")); return -1; } + if (iommu->dma_translation != VIR_TRISTATE_SWITCH_ABSENT && + !virQEMUCapsGet(qemuCaps, QEMU_CAPS_INTEL_IOMMU_DMA_TRANSLATION)) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("iommu: updating dma translation is not supported with this QEMU binary")); + return -1; + } return 0; } -- 2.22.3

Test data for the intel-iommu dma-translation attribute added previously Signed-off-by: Sandesh Patel <sandesh.patel@nutanix.com> --- .../caps_7.1.0_x86_64.xml | 1 + .../caps_7.2.0_x86_64+hvf.xml | 1 + .../caps_7.2.0_x86_64.xml | 1 + .../caps_8.0.0_x86_64.xml | 1 + .../caps_8.1.0_x86_64.xml | 1 + .../caps_8.2.0_x86_64.xml | 1 + .../caps_9.0.0_x86_64.xml | 1 + .../caps_9.1.0_x86_64.xml | 1 + .../migration-out-nbd-bitmaps-in.xml | 1 + ...l-iommu-dma-translation.x86_64-latest.args | 34 +++++++++++++++++ ...el-iommu-dma-translation.x86_64-latest.xml | 1 + .../intel-iommu-dma-translation.xml | 37 +++++++++++++++++++ tests/qemuxmlconftest.c | 1 + 13 files changed, 82 insertions(+) create mode 100644 tests/qemuxmlconfdata/intel-iommu-dma-translation.x86_64-latest.args create mode 120000 tests/qemuxmlconfdata/intel-iommu-dma-translation.x86_64-latest.xml create mode 100644 tests/qemuxmlconfdata/intel-iommu-dma-translation.xml diff --git a/tests/qemucapabilitiesdata/caps_7.1.0_x86_64.xml b/tests/qemucapabilitiesdata/caps_7.1.0_x86_64.xml index 555120e958..9737e3d083 100644 --- a/tests/qemucapabilitiesdata/caps_7.1.0_x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_7.1.0_x86_64.xml @@ -192,6 +192,7 @@ <flag name='usb-mtp'/> <flag name='netdev.user'/> <flag name='acpi-erst'/> + <flag name='intel-iommu.dma-translation'/> <version>7001000</version> <microcodeVersion>43100244</microcodeVersion> <package>v7.1.0</package> diff --git a/tests/qemucapabilitiesdata/caps_7.2.0_x86_64+hvf.xml b/tests/qemucapabilitiesdata/caps_7.2.0_x86_64+hvf.xml index ca25a5549e..55dcbf203e 100644 --- a/tests/qemucapabilitiesdata/caps_7.2.0_x86_64+hvf.xml +++ b/tests/qemucapabilitiesdata/caps_7.2.0_x86_64+hvf.xml @@ -196,6 +196,7 @@ <flag name='usb-mtp'/> <flag name='netdev.user'/> <flag name='acpi-erst'/> + <flag name='intel-iommu.dma-translation'/> <version>7002000</version> <microcodeVersion>43100245</microcodeVersion> <package>v7.2.0</package> diff --git a/tests/qemucapabilitiesdata/caps_7.2.0_x86_64.xml b/tests/qemucapabilitiesdata/caps_7.2.0_x86_64.xml index 8b835e6187..1253c860ee 100644 --- a/tests/qemucapabilitiesdata/caps_7.2.0_x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_7.2.0_x86_64.xml @@ -196,6 +196,7 @@ <flag name='usb-mtp'/> <flag name='netdev.user'/> <flag name='acpi-erst'/> + <flag name='intel-iommu.dma-translation'/> <version>7002000</version> <microcodeVersion>43100245</microcodeVersion> <package>v7.2.0</package> diff --git a/tests/qemucapabilitiesdata/caps_8.0.0_x86_64.xml b/tests/qemucapabilitiesdata/caps_8.0.0_x86_64.xml index 3ac9e96066..d3901fef05 100644 --- a/tests/qemucapabilitiesdata/caps_8.0.0_x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_8.0.0_x86_64.xml @@ -200,6 +200,7 @@ <flag name='usb-mtp'/> <flag name='netdev.user'/> <flag name='acpi-erst'/> + <flag name='intel-iommu.dma-translation'/> <version>8000000</version> <microcodeVersion>43100244</microcodeVersion> <package>v8.0.0</package> diff --git a/tests/qemucapabilitiesdata/caps_8.1.0_x86_64.xml b/tests/qemucapabilitiesdata/caps_8.1.0_x86_64.xml index 476195d147..f8a9993ede 100644 --- a/tests/qemucapabilitiesdata/caps_8.1.0_x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_8.1.0_x86_64.xml @@ -202,6 +202,7 @@ <flag name='usb-mtp'/> <flag name='netdev.user'/> <flag name='acpi-erst'/> + <flag name='intel-iommu.dma-translation'/> <version>8001000</version> <microcodeVersion>43100245</microcodeVersion> <package>v8.1.0</package> diff --git a/tests/qemucapabilitiesdata/caps_8.2.0_x86_64.xml b/tests/qemucapabilitiesdata/caps_8.2.0_x86_64.xml index 25cb22aafc..43d7105c2d 100644 --- a/tests/qemucapabilitiesdata/caps_8.2.0_x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_8.2.0_x86_64.xml @@ -205,6 +205,7 @@ <flag name='virtio-sound'/> <flag name='netdev.user'/> <flag name='acpi-erst'/> + <flag name='intel-iommu.dma-translation'/> <version>8002000</version> <microcodeVersion>43100246</microcodeVersion> <package>v8.2.0</package> diff --git a/tests/qemucapabilitiesdata/caps_9.0.0_x86_64.xml b/tests/qemucapabilitiesdata/caps_9.0.0_x86_64.xml index b646377dec..e96af86a92 100644 --- a/tests/qemucapabilitiesdata/caps_9.0.0_x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_9.0.0_x86_64.xml @@ -207,6 +207,7 @@ <flag name='virtio-sound'/> <flag name='netdev.user'/> <flag name='acpi-erst'/> + <flag name='intel-iommu.dma-translation'/> <version>9000000</version> <microcodeVersion>43100245</microcodeVersion> <package>v9.0.0</package> diff --git a/tests/qemucapabilitiesdata/caps_9.1.0_x86_64.xml b/tests/qemucapabilitiesdata/caps_9.1.0_x86_64.xml index dc548583a5..e17c22d776 100644 --- a/tests/qemucapabilitiesdata/caps_9.1.0_x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_9.1.0_x86_64.xml @@ -205,6 +205,7 @@ <flag name='virtio-sound'/> <flag name='netdev.user'/> <flag name='acpi-erst'/> + <flag name='intel-iommu.dma-translation'/> <version>9000050</version> <microcodeVersion>43100246</microcodeVersion> <package>v9.0.0-1388-g80e8f06021-dirty</package> diff --git a/tests/qemustatusxml2xmldata/migration-out-nbd-bitmaps-in.xml b/tests/qemustatusxml2xmldata/migration-out-nbd-bitmaps-in.xml index 4ee44ffbd4..15fa35620d 100644 --- a/tests/qemustatusxml2xmldata/migration-out-nbd-bitmaps-in.xml +++ b/tests/qemustatusxml2xmldata/migration-out-nbd-bitmaps-in.xml @@ -261,6 +261,7 @@ <flag name='vhost-user-blk'/> <flag name='cpu-max'/> <flag name='migration-param.block-bitmap-mapping'/> + <flag name='intel-iommu.dma-translation'/> </qemuCaps> <job type='none' async='migration out' phase='perform3' flags='0x42' asyncStarted='0'> <disk dev='hda' migrating='no'/> diff --git a/tests/qemuxmlconfdata/intel-iommu-dma-translation.x86_64-latest.args b/tests/qemuxmlconfdata/intel-iommu-dma-translation.x86_64-latest.args new file mode 100644 index 0000000000..cc7f819f5c --- /dev/null +++ b/tests/qemuxmlconfdata/intel-iommu-dma-translation.x86_64-latest.args @@ -0,0 +1,34 @@ +LC_ALL=C \ +PATH=/bin \ +HOME=/var/lib/libvirt/qemu/domain--1-QEMUGuest1 \ +USER=test \ +LOGNAME=test \ +XDG_DATA_HOME=/var/lib/libvirt/qemu/domain--1-QEMUGuest1/.local/share \ +XDG_CACHE_HOME=/var/lib/libvirt/qemu/domain--1-QEMUGuest1/.cache \ +XDG_CONFIG_HOME=/var/lib/libvirt/qemu/domain--1-QEMUGuest1/.config \ +/usr/bin/qemu-system-x86_64 \ +-name guest=QEMUGuest1,debug-threads=on \ +-S \ +-object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/var/lib/libvirt/qemu/domain--1-QEMUGuest1/master-key.aes"}' \ +-machine q35,usb=off,kernel_irqchip=split,dump-guest-core=off,memory-backend=pc.ram,acpi=off \ +-accel kvm \ +-cpu qemu64 \ +-m size=219136k \ +-object '{"qom-type":"memory-backend-ram","id":"pc.ram","size":224395264}' \ +-overcommit mem-lock=off \ +-smp 1,sockets=1,cores=1,threads=1 \ +-uuid c7a5fdbd-edaf-9455-926a-d65c16db1809 \ +-display none \ +-no-user-config \ +-nodefaults \ +-chardev socket,id=charmonitor,fd=1729,server=on,wait=off \ +-mon chardev=charmonitor,id=monitor,mode=control \ +-rtc base=utc \ +-no-shutdown \ +-boot strict=on \ +-device '{"driver":"intel-iommu","id":"iommu0","intremap":"on","dma-translation":false}' \ +-audiodev '{"id":"audio1","driver":"none"}' \ +-global ICH9-LPC.noreboot=off \ +-watchdog-action reset \ +-sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,resourcecontrol=deny \ +-msg timestamp=on diff --git a/tests/qemuxmlconfdata/intel-iommu-dma-translation.x86_64-latest.xml b/tests/qemuxmlconfdata/intel-iommu-dma-translation.x86_64-latest.xml new file mode 120000 index 0000000000..a35a254f7a --- /dev/null +++ b/tests/qemuxmlconfdata/intel-iommu-dma-translation.x86_64-latest.xml @@ -0,0 +1 @@ +intel-iommu-dma-translation.xml \ No newline at end of file diff --git a/tests/qemuxmlconfdata/intel-iommu-dma-translation.xml b/tests/qemuxmlconfdata/intel-iommu-dma-translation.xml new file mode 100644 index 0000000000..9b4debca0a --- /dev/null +++ b/tests/qemuxmlconfdata/intel-iommu-dma-translation.xml @@ -0,0 +1,37 @@ +<domain type='kvm'> + <name>QEMUGuest1</name> + <uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid> + <memory unit='KiB'>219100</memory> + <currentMemory unit='KiB'>219100</currentMemory> + <vcpu placement='static'>1</vcpu> + <os> + <type arch='x86_64' machine='q35'>hvm</type> + <boot dev='hd'/> + </os> + <features> + <ioapic driver='qemu'/> + </features> + <cpu mode='custom' match='exact' check='none'> + <model fallback='forbid'>qemu64</model> + </cpu> + <clock offset='utc'/> + <on_poweroff>destroy</on_poweroff> + <on_reboot>restart</on_reboot> + <on_crash>destroy</on_crash> + <devices> + <emulator>/usr/bin/qemu-system-x86_64</emulator> + <controller type='pci' index='0' model='pcie-root'/> + <controller type='usb' index='0' model='none'/> + <controller type='sata' index='0'> + <address type='pci' domain='0x0000' bus='0x00' slot='0x1f' function='0x2'/> + </controller> + <input type='mouse' bus='ps2'/> + <input type='keyboard' bus='ps2'/> + <audio id='1' type='none'/> + <watchdog model='itco' action='reset'/> + <memballoon model='none'/> + <iommu model='intel'> + <driver intremap='on' dma_translation='off'/> + </iommu> + </devices> +</domain> diff --git a/tests/qemuxmlconftest.c b/tests/qemuxmlconftest.c index 4fccc06fcd..41453480a9 100644 --- a/tests/qemuxmlconftest.c +++ b/tests/qemuxmlconftest.c @@ -2713,6 +2713,7 @@ mymain(void) DO_TEST_CAPS_LATEST("intel-iommu-eim"); DO_TEST_CAPS_LATEST("intel-iommu-device-iotlb"); DO_TEST_CAPS_LATEST("intel-iommu-aw-bits"); + DO_TEST_CAPS_LATEST("intel-iommu-dma-translation"); DO_TEST_CAPS_LATEST_PARSE_ERROR("intel-iommu-wrong-machine"); DO_TEST_CAPS_ARCH_LATEST("iommu-smmuv3", "aarch64"); DO_TEST_CAPS_LATEST("virtio-iommu-x86_64"); -- 2.22.3

On 8/7/24 09:37, Sandesh Patel wrote:
Since Qemu commit 8646d9c (Support IR-only mode without DMA translation) version 7.1.0, Qemu support dma-translation attribute for Intel IOMMU. This patch adds a new attribute dma_translation to configure this.
Sandesh Patel (3): Conf: add dma_translation attribute to iommu qemu: format dma-translation on intel-iommu command line tests: add test for intel-iommu dma-translation attribute
docs/formatdomain.rst | 7 ++++ src/conf/domain_conf.c | 15 ++++++++ src/conf/domain_conf.h | 1 + src/conf/schemas/domaincommon.rng | 5 +++ src/qemu/qemu_capabilities.c | 2 + src/qemu/qemu_capabilities.h | 1 + src/qemu/qemu_command.c | 1 + src/qemu/qemu_validate.c | 6 +++ .../caps_7.1.0_x86_64.xml | 1 + .../caps_7.2.0_x86_64+hvf.xml | 1 + .../caps_7.2.0_x86_64.xml | 1 + .../caps_8.0.0_x86_64.xml | 1 + .../caps_8.1.0_x86_64.xml | 1 + .../caps_8.2.0_x86_64.xml | 1 + .../caps_9.0.0_x86_64.xml | 1 + .../caps_9.1.0_x86_64.xml | 1 + .../migration-out-nbd-bitmaps-in.xml | 1 + ...l-iommu-dma-translation.x86_64-latest.args | 34 +++++++++++++++++ ...el-iommu-dma-translation.x86_64-latest.xml | 1 + .../intel-iommu-dma-translation.xml | 37 +++++++++++++++++++ tests/qemuxmlconftest.c | 1 + 21 files changed, 120 insertions(+) create mode 100644 tests/qemuxmlconfdata/intel-iommu-dma-translation.x86_64-latest.args create mode 120000 tests/qemuxmlconfdata/intel-iommu-dma-translation.x86_64-latest.xml create mode 100644 tests/qemuxmlconfdata/intel-iommu-dma-translation.xml
We split things a bit differently, but I'll do that before merging. Reviewed-by: Michal Privoznik <mprivozn@redhat.com> and merged. Congratulations on your first libvirt contribution! Michal

On 9 Aug 2024, at 1:37 PM, Michal Prívozník <mprivozn@redhat.com> wrote: !-------------------------------------------------------------------| CAUTION: External Email |-------------------------------------------------------------------! On 8/7/24 09:37, Sandesh Patel wrote: Since Qemu commit 8646d9c (Support IR-only mode without DMA translation) version 7.1.0, Qemu support dma-translation attribute for Intel IOMMU. This patch adds a new attribute dma_translation to configure this. Sandesh Patel (3): Conf: add dma_translation attribute to iommu qemu: format dma-translation on intel-iommu command line tests: add test for intel-iommu dma-translation attribute docs/formatdomain.rst | 7 ++++ src/conf/domain_conf.c | 15 ++++++++ src/conf/domain_conf.h | 1 + src/conf/schemas/domaincommon.rng | 5 +++ src/qemu/qemu_capabilities.c | 2 + src/qemu/qemu_capabilities.h | 1 + src/qemu/qemu_command.c | 1 + src/qemu/qemu_validate.c | 6 +++ .../caps_7.1.0_x86_64.xml | 1 + .../caps_7.2.0_x86_64+hvf.xml | 1 + .../caps_7.2.0_x86_64.xml | 1 + .../caps_8.0.0_x86_64.xml | 1 + .../caps_8.1.0_x86_64.xml | 1 + .../caps_8.2.0_x86_64.xml | 1 + .../caps_9.0.0_x86_64.xml | 1 + .../caps_9.1.0_x86_64.xml | 1 + .../migration-out-nbd-bitmaps-in.xml | 1 + ...l-iommu-dma-translation.x86_64-latest.args | 34 +++++++++++++++++ ...el-iommu-dma-translation.x86_64-latest.xml | 1 + .../intel-iommu-dma-translation.xml | 37 +++++++++++++++++++ tests/qemuxmlconftest.c | 1 + 21 files changed, 120 insertions(+) create mode 100644 tests/qemuxmlconfdata/intel-iommu-dma-translation.x86_64-latest.args create mode 120000 tests/qemuxmlconfdata/intel-iommu-dma-translation.x86_64-latest.xml create mode 100644 tests/qemuxmlconfdata/intel-iommu-dma-translation.xml We split things a bit differently, but I'll do that before merging. Reviewed-by: Michal Privoznik <mprivozn@redhat.com<mailto:mprivozn@redhat.com>> and merged. Congratulations on your first libvirt contribution! Michal Thanks Michal Regards, Sandesh
participants (2)
-
Michal Prívozník
-
Sandesh Patel