On Thu, Dec 18, 2025 at 06:19:25PM -0800, Nathan Chen via Devel wrote:
> From: Nathan Chen <[email protected]>
> 
> Provide sample XML and CLI args for the iommufd XML schema
> for pc, q35, and virt machine types.

All these only add a single <hostdev>.  Can you change one of them
to have two <hostdev> to prove that we're only opening /dev/iommu
once for multiple host devs.

> 
> Signed-off-by: Nathan Chen <[email protected]>
> ---
>  .../iommufd-q35.x86_64-latest.args            | 41 +++++++++++++
>  .../iommufd-q35.x86_64-latest.xml             | 60 +++++++++++++++++++
>  tests/qemuxmlconfdata/iommufd-q35.xml         | 38 ++++++++++++
>  .../iommufd-virt.aarch64-latest.args          | 33 ++++++++++
>  .../iommufd-virt.aarch64-latest.xml           | 34 +++++++++++
>  tests/qemuxmlconfdata/iommufd-virt.xml        | 22 +++++++
>  .../iommufd.x86_64-latest.args                | 35 +++++++++++
>  .../qemuxmlconfdata/iommufd.x86_64-latest.xml | 38 ++++++++++++
>  tests/qemuxmlconfdata/iommufd.xml             | 30 ++++++++++
>  tests/qemuxmlconftest.c                       | 33 ++++++++++
>  10 files changed, 364 insertions(+)
>  create mode 100644 tests/qemuxmlconfdata/iommufd-q35.x86_64-latest.args
>  create mode 100644 tests/qemuxmlconfdata/iommufd-q35.x86_64-latest.xml
>  create mode 100644 tests/qemuxmlconfdata/iommufd-q35.xml
>  create mode 100644 tests/qemuxmlconfdata/iommufd-virt.aarch64-latest.args
>  create mode 100644 tests/qemuxmlconfdata/iommufd-virt.aarch64-latest.xml
>  create mode 100644 tests/qemuxmlconfdata/iommufd-virt.xml
>  create mode 100644 tests/qemuxmlconfdata/iommufd.x86_64-latest.args
>  create mode 100644 tests/qemuxmlconfdata/iommufd.x86_64-latest.xml
>  create mode 100644 tests/qemuxmlconfdata/iommufd.xml
> 
> diff --git a/tests/qemuxmlconfdata/iommufd-q35.x86_64-latest.args 
> b/tests/qemuxmlconfdata/iommufd-q35.x86_64-latest.args
> new file mode 100644
> index 0000000000..7d819e141b
> --- /dev/null
> +++ b/tests/qemuxmlconfdata/iommufd-q35.x86_64-latest.args
> @@ -0,0 +1,41 @@
> +LC_ALL=C \
> +PATH=/bin \
> +HOME=/var/lib/libvirt/qemu/domain--1-q35-test \
> +USER=test \
> +LOGNAME=test \
> +XDG_DATA_HOME=/var/lib/libvirt/qemu/domain--1-q35-test/.local/share \
> +XDG_CACHE_HOME=/var/lib/libvirt/qemu/domain--1-q35-test/.cache \
> +XDG_CONFIG_HOME=/var/lib/libvirt/qemu/domain--1-q35-test/.config \
> +/usr/bin/qemu-system-x86_64 \
> +-name guest=q35-test,debug-threads=on \
> +-S \
> +-object 
> '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/var/lib/libvirt/qemu/domain--1-q35-test/master-key.aes"}'
>  \
> +-machine q35,usb=off,dump-guest-core=off,memory-backend=pc.ram,acpi=off \
> +-accel tcg \
> +-cpu qemu64 \
> +-m size=2097152k \
> +-object '{"qom-type":"memory-backend-ram","id":"pc.ram","size":2147483648}' \
> +-overcommit mem-lock=off \
> +-smp 2,sockets=2,cores=1,threads=1 \
> +-uuid 11dbdcdd-4c3b-482b-8903-9bdb8c0a2774 \
> +-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":"pcie-root-port","port":16,"chassis":1,"id":"pci.1","bus":"pcie.0","multifunction":true,"addr":"0x2"}'
>  \
> +-device 
> '{"driver":"pcie-root-port","port":17,"chassis":2,"id":"pci.2","bus":"pcie.0","addr":"0x2.0x1"}'
>  \
> +-device '{"driver":"qemu-xhci","id":"usb","bus":"pci.1","addr":"0x0"}' \
> +-blockdev 
> '{"driver":"host_device","filename":"/dev/HostVG/QEMUGuest1","node-name":"libvirt-1-storage","read-only":false}'
>  \
> +-device 
> '{"driver":"ide-hd","bus":"ide.0","drive":"libvirt-1-storage","id":"sata0-0-0","bootindex":1}'
>  \
> +-audiodev '{"id":"audio1","driver":"none"}' \
> +-device 
> '{"driver":"qxl-vga","id":"video0","max_outputs":1,"ram_size":67108864,"vram_size":33554432,"vram64_size_mb":0,"vgamem_mb":8,"bus":"pcie.0","addr":"0x1"}'
>  \
> +-global ICH9-LPC.noreboot=off \
> +-watchdog-action reset \
> +-object '{"qom-type":"iommufd","id":"iommufd0","fd":"-1"}' \
> +-device 
> '{"driver":"vfio-pci","host":"0000:06:12.5","id":"hostdev0","iommufd":"iommufd0","fd":"0","bus":"pcie.0","addr":"0x3"}'
>  \
> +-sandbox 
> on,obsolete=deny,elevateprivileges=deny,spawn=deny,resourcecontrol=deny \
> +-msg timestamp=on
> diff --git a/tests/qemuxmlconfdata/iommufd-q35.x86_64-latest.xml 
> b/tests/qemuxmlconfdata/iommufd-q35.x86_64-latest.xml
> new file mode 100644
> index 0000000000..bb76252b61
> --- /dev/null
> +++ b/tests/qemuxmlconfdata/iommufd-q35.x86_64-latest.xml
> @@ -0,0 +1,60 @@
> +<domain type='qemu'>
> +  <name>q35-test</name>
> +  <uuid>11dbdcdd-4c3b-482b-8903-9bdb8c0a2774</uuid>
> +  <memory unit='KiB'>2097152</memory>
> +  <currentMemory unit='KiB'>2097152</currentMemory>
> +  <vcpu placement='static' cpuset='0-1'>2</vcpu>
> +  <os>
> +    <type arch='x86_64' machine='q35'>hvm</type>
> +    <boot dev='hd'/>
> +  </os>
> +  <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>
> +    <disk type='block' device='disk'>
> +      <driver name='qemu' type='raw'/>
> +      <source dev='/dev/HostVG/QEMUGuest1'/>
> +      <target dev='sda' bus='sata'/>
> +      <address type='drive' controller='0' bus='0' target='0' unit='0'/>
> +    </disk>
> +    <controller type='pci' index='0' model='pcie-root'/>
> +    <controller type='pci' index='1' model='pcie-root-port'>
> +      <model name='pcie-root-port'/>
> +      <target chassis='1' port='0x10'/>
> +      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' 
> function='0x0' multifunction='on'/>
> +    </controller>
> +    <controller type='pci' index='2' model='pcie-root-port'>
> +      <model name='pcie-root-port'/>
> +      <target chassis='2' port='0x11'/>
> +      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' 
> function='0x1'/>
> +    </controller>
> +    <controller type='sata' index='0'>
> +      <address type='pci' domain='0x0000' bus='0x00' slot='0x1f' 
> function='0x2'/>
> +    </controller>
> +    <controller type='usb' index='0' model='qemu-xhci'>
> +      <address type='pci' domain='0x0000' bus='0x01' slot='0x00' 
> function='0x0'/>
> +    </controller>
> +    <input type='mouse' bus='ps2'/>
> +    <input type='keyboard' bus='ps2'/>
> +    <audio id='1' type='none'/>
> +    <video>
> +      <model type='qxl' ram='65536' vram='32768' vgamem='8192' heads='1' 
> primary='yes'/>
> +      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' 
> function='0x0'/>
> +    </video>
> +    <hostdev mode='subsystem' type='pci' managed='yes'>
> +      <driver iommufd='yes'/>
> +      <source>
> +        <address domain='0x0000' bus='0x06' slot='0x12' function='0x5'/>
> +      </source>
> +      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' 
> function='0x0'/>
> +    </hostdev>
> +    <watchdog model='itco' action='reset'/>
> +    <memballoon model='none'/>
> +  </devices>
> +</domain>
> diff --git a/tests/qemuxmlconfdata/iommufd-q35.xml 
> b/tests/qemuxmlconfdata/iommufd-q35.xml
> new file mode 100644
> index 0000000000..f3c2269fb1
> --- /dev/null
> +++ b/tests/qemuxmlconfdata/iommufd-q35.xml
> @@ -0,0 +1,38 @@
> +<domain type='qemu'>
> +  <name>q35-test</name>
> +  <uuid>11dbdcdd-4c3b-482b-8903-9bdb8c0a2774</uuid>
> +  <memory unit='KiB'>2097152</memory>
> +  <currentMemory unit='KiB'>2097152</currentMemory>
> +  <vcpu placement='static' cpuset='0-1'>2</vcpu>
> +  <os>
> +    <type arch='x86_64' machine='q35'>hvm</type>
> +    <boot dev='hd'/>
> +  </os>
> +  <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>
> +    <disk type='block' device='disk'>
> +      <source dev='/dev/HostVG/QEMUGuest1'/>
> +      <target dev='sda' bus='sata'/>
> +      <address type='drive' controller='0' bus='0' target='0' unit='0'/>
> +    </disk>
> +    <controller type='pci' index='0' model='pcie-root'/>
> +    <hostdev mode='subsystem' type='pci' managed='yes'>
> +      <driver iommufd='yes'/>
> +      <source>
> +        <address domain='0x0000' bus='0x06' slot='0x12' function='0x5'/>
> +      </source>
> +      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' 
> function='0x0'/>
> +    </hostdev>
> +    <controller type='sata' index='0'/>
> +    <input type='mouse' bus='ps2'/>
> +    <input type='keyboard' bus='ps2'/>
> +    <video>
> +      <model type='qxl' ram='65536' vram='32768' vgamem='8192' heads='1'/>
> +    </video>
> +    <memballoon model='none'/>
> +  </devices>
> +</domain>
> diff --git a/tests/qemuxmlconfdata/iommufd-virt.aarch64-latest.args 
> b/tests/qemuxmlconfdata/iommufd-virt.aarch64-latest.args
> new file mode 100644
> index 0000000000..dbfd395168
> --- /dev/null
> +++ b/tests/qemuxmlconfdata/iommufd-virt.aarch64-latest.args
> @@ -0,0 +1,33 @@
> +LC_ALL=C \
> +PATH=/bin \
> +HOME=/var/lib/libvirt/qemu/domain--1-foo \
> +USER=test \
> +LOGNAME=test \
> +XDG_DATA_HOME=/var/lib/libvirt/qemu/domain--1-foo/.local/share \
> +XDG_CACHE_HOME=/var/lib/libvirt/qemu/domain--1-foo/.cache \
> +XDG_CONFIG_HOME=/var/lib/libvirt/qemu/domain--1-foo/.config \
> +/usr/bin/qemu-system-aarch64 \
> +-name guest=foo,debug-threads=on \
> +-S \
> +-object 
> '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/var/lib/libvirt/qemu/domain--1-foo/master-key.aes"}'
>  \
> +-machine 
> virt,usb=off,gic-version=2,dump-guest-core=off,memory-backend=mach-virt.ram,acpi=off
>  \
> +-accel tcg \
> +-cpu cortex-a15 \
> +-m size=1048576k \
> +-object 
> '{"qom-type":"memory-backend-ram","id":"mach-virt.ram","size":1073741824}' \
> +-overcommit mem-lock=off \
> +-smp 1,sockets=1,cores=1,threads=1 \
> +-uuid 6ba7b810-9dad-11d1-80b4-00c04fd430c8 \
> +-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 \
> +-audiodev '{"id":"audio1","driver":"none"}' \
> +-object '{"qom-type":"iommufd","id":"iommufd0","fd":"-1"}' \
> +-device 
> '{"driver":"vfio-pci","host":"0000:06:12.5","id":"hostdev0","iommufd":"iommufd0","fd":"0","bus":"pcie.0","addr":"0x1"}'
>  \
> +-sandbox 
> on,obsolete=deny,elevateprivileges=deny,spawn=deny,resourcecontrol=deny \
> +-msg timestamp=on
> diff --git a/tests/qemuxmlconfdata/iommufd-virt.aarch64-latest.xml 
> b/tests/qemuxmlconfdata/iommufd-virt.aarch64-latest.xml
> new file mode 100644
> index 0000000000..97b6e1e1c7
> --- /dev/null
> +++ b/tests/qemuxmlconfdata/iommufd-virt.aarch64-latest.xml
> @@ -0,0 +1,34 @@
> +<domain type='qemu'>
> +  <name>foo</name>
> +  <uuid>6ba7b810-9dad-11d1-80b4-00c04fd430c8</uuid>
> +  <memory unit='KiB'>1048576</memory>
> +  <currentMemory unit='KiB'>1048576</currentMemory>
> +  <vcpu placement='static'>1</vcpu>
> +  <os>
> +    <type arch='aarch64' machine='virt'>hvm</type>
> +    <boot dev='hd'/>
> +  </os>
> +  <features>
> +    <gic version='2'/>
> +  </features>
> +  <cpu mode='custom' match='exact' check='none'>
> +    <model fallback='forbid'>cortex-a15</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-aarch64</emulator>
> +    <controller type='pci' index='0' model='pcie-root'/>
> +    <audio id='1' type='none'/>
> +    <hostdev mode='subsystem' type='pci' managed='yes'>
> +      <driver iommufd='yes'/>
> +      <source>
> +        <address domain='0x0000' bus='0x06' slot='0x12' function='0x5'/>
> +      </source>
> +      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' 
> function='0x0'/>
> +    </hostdev>
> +    <memballoon model='none'/>
> +  </devices>
> +</domain>
> diff --git a/tests/qemuxmlconfdata/iommufd-virt.xml 
> b/tests/qemuxmlconfdata/iommufd-virt.xml
> new file mode 100644
> index 0000000000..c0b9d643b4
> --- /dev/null
> +++ b/tests/qemuxmlconfdata/iommufd-virt.xml
> @@ -0,0 +1,22 @@
> +<domain type='qemu'>
> +  <name>foo</name>
> +  <uuid>6ba7b810-9dad-11d1-80b4-00c04fd430c8</uuid>
> +  <memory unit='KiB'>1048576</memory>
> +  <currentMemory unit='KiB'>1048576</currentMemory>
> +  <vcpu placement='static'>1</vcpu>
> +  <os>
> +    <type arch='aarch64' machine='virt'>hvm</type>
> +  </os>
> +  <devices>
> +    <emulator>/usr/bin/qemu-system-aarch64</emulator>
> +    <controller type='pci' index='0' model='pcie-root'/>
> +    <hostdev mode='subsystem' type='pci' managed='yes'>
> +      <driver iommufd='yes'/>
> +      <source>
> +        <address domain='0x0000' bus='0x06' slot='0x12' function='0x5'/>
> +      </source>
> +      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' 
> function='0x0'/>
> +    </hostdev>
> +    <memballoon model='none'/>
> +  </devices>
> +</domain>
> diff --git a/tests/qemuxmlconfdata/iommufd.x86_64-latest.args 
> b/tests/qemuxmlconfdata/iommufd.x86_64-latest.args
> new file mode 100644
> index 0000000000..3130ba2e3a
> --- /dev/null
> +++ b/tests/qemuxmlconfdata/iommufd.x86_64-latest.args
> @@ -0,0 +1,35 @@
> +LC_ALL=C \
> +PATH=/bin \
> +HOME=/var/lib/libvirt/qemu/domain--1-foo \
> +USER=test \
> +LOGNAME=test \
> +XDG_DATA_HOME=/var/lib/libvirt/qemu/domain--1-foo/.local/share \
> +XDG_CACHE_HOME=/var/lib/libvirt/qemu/domain--1-foo/.cache \
> +XDG_CONFIG_HOME=/var/lib/libvirt/qemu/domain--1-foo/.config \
> +/usr/bin/qemu-system-x86_64 \
> +-name guest=foo,debug-threads=on \
> +-S \
> +-object 
> '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/var/lib/libvirt/qemu/domain--1-foo/master-key.aes"}'
>  \
> +-machine pc,usb=off,dump-guest-core=off,memory-backend=pc.ram,acpi=off \
> +-accel tcg \
> +-cpu qemu64 \
> +-m size=2097152k \
> +-object '{"qom-type":"memory-backend-ram","id":"pc.ram","size":2147483648}' \
> +-overcommit mem-lock=off \
> +-smp 2,sockets=2,cores=1,threads=1 \
> +-uuid 3c7c30b5-7866-4b05-8a29-efebccba52a0 \
> +-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":"piix3-usb-uhci","id":"usb","bus":"pci.0","addr":"0x1.0x2"}' \
> +-audiodev '{"id":"audio1","driver":"none"}' \
> +-object '{"qom-type":"iommufd","id":"iommufd0","fd":"-1"}' \
> +-device 
> '{"driver":"vfio-pci","host":"0000:06:12.5","id":"hostdev0","iommufd":"iommufd0","fd":"0","bus":"pci.0","addr":"0x3"}'
>  \
> +-device 
> '{"driver":"virtio-balloon-pci","id":"balloon0","bus":"pci.0","addr":"0x2"}' \
> +-sandbox 
> on,obsolete=deny,elevateprivileges=deny,spawn=deny,resourcecontrol=deny \
> +-msg timestamp=on
> diff --git a/tests/qemuxmlconfdata/iommufd.x86_64-latest.xml 
> b/tests/qemuxmlconfdata/iommufd.x86_64-latest.xml
> new file mode 100644
> index 0000000000..2e8951aaf6
> --- /dev/null
> +++ b/tests/qemuxmlconfdata/iommufd.x86_64-latest.xml
> @@ -0,0 +1,38 @@
> +<domain type='qemu'>
> +  <name>foo</name>
> +  <uuid>3c7c30b5-7866-4b05-8a29-efebccba52a0</uuid>
> +  <memory unit='KiB'>2097152</memory>
> +  <currentMemory unit='KiB'>2097152</currentMemory>
> +  <vcpu placement='static' cpuset='0-1'>2</vcpu>
> +  <os>
> +    <type arch='x86_64' machine='pc'>hvm</type>
> +    <boot dev='hd'/>
> +  </os>
> +  <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='pci-root'/>
> +    <controller type='usb' index='0' model='piix3-uhci'>
> +      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' 
> function='0x2'/>
> +    </controller>
> +    <input type='mouse' bus='ps2'/>
> +    <input type='keyboard' bus='ps2'/>
> +    <audio id='1' type='none'/>
> +    <hostdev mode='subsystem' type='pci' managed='yes'>
> +      <driver iommufd='yes'/>
> +      <source>
> +        <address domain='0x0000' bus='0x06' slot='0x12' function='0x5'/>
> +      </source>
> +      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' 
> function='0x0'/>
> +    </hostdev>
> +    <memballoon model='virtio'>
> +      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' 
> function='0x0'/>
> +    </memballoon>
> +  </devices>
> +</domain>
> diff --git a/tests/qemuxmlconfdata/iommufd.xml 
> b/tests/qemuxmlconfdata/iommufd.xml
> new file mode 100644
> index 0000000000..eb278414d2
> --- /dev/null
> +++ b/tests/qemuxmlconfdata/iommufd.xml
> @@ -0,0 +1,30 @@
> +<domain type='qemu'>
> +  <name>foo</name>
> +  <uuid>3c7c30b5-7866-4b05-8a29-efebccba52a0</uuid>
> +  <memory unit='KiB'>2097152</memory>
> +  <currentMemory unit='KiB'>2097152</currentMemory>
> +  <vcpu placement='static' cpuset='0-1'>2</vcpu>
> +  <os>
> +    <type arch='x86_64' machine='pc'>hvm</type>
> +    <boot dev='hd'/>
> +  </os>
> +  <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='pci-root'/>
> +    <hostdev mode='subsystem' type='pci' managed='yes'>
> +      <driver iommufd='yes'/>
> +      <source>
> +        <address domain='0x0000' bus='0x06' slot='0x12' function='0x5'/>
> +      </source>
> +      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' 
> function='0x0'/>
> +    </hostdev>
> +    <controller type='usb' index='0'/>
> +    <input type='mouse' bus='ps2'/>
> +    <input type='keyboard' bus='ps2'/>
> +    <memballoon model='virtio'/>
> +  </devices>
> +</domain>
> diff --git a/tests/qemuxmlconftest.c b/tests/qemuxmlconftest.c
> index 5fd538d26a..ac80ae7a43 100644
> --- a/tests/qemuxmlconftest.c
> +++ b/tests/qemuxmlconftest.c
> @@ -351,6 +351,33 @@ fakeNetworkPortGetXMLDesc(virNetworkPortPtr port,
>  }
>  
>  
> +static void
> +testSetupHostdevPrivateData(virDomainDef *def)
> +{
> +    size_t i;
> +
> +    for (i = 0; i < def->nhostdevs; i++) {
> +        virDomainHostdevDef *hostdev = def->hostdevs[i];
> +
> +        if (hostdev->mode == VIR_DOMAIN_HOSTDEV_MODE_SUBSYS &&
> +            hostdev->source.subsys.type == 
> VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_PCI &&
> +            hostdev->source.subsys.u.pci.driver.name == 
> VIR_DEVICE_HOSTDEV_PCI_DRIVER_NAME_VFIO &&
> +            hostdev->source.subsys.u.pci.driver.iommufd == 
> VIR_TRISTATE_BOOL_YES) {
> +
> +            qemuDomainHostdevPrivate *priv;
> +
> +            if (!hostdev->privateData) {
> +                hostdev->privateData = qemuDomainHostdevPrivateNew();
> +            }
> +
> +            priv = QEMU_DOMAIN_HOSTDEV_PRIVATE(hostdev);
> +            /* Use a placeholder FD value for tests */
> +            priv->vfioDeviceFd = 0;
> +        }
> +    }
> +}
> +
> +
>  static virNetworkDriver fakeNetworkDriver = {
>      .networkLookupByName = fakeNetworkLookupByName,
>      .networkGetXMLDesc = fakeNetworkGetXMLDesc,
> @@ -404,6 +431,8 @@ testCompareXMLToArgvCreateArgs(virQEMUDriver *drv,
>      if (testQemuPrepareHostBackendChardevOne(NULL, priv->monConfig, vm) < 0)
>          return NULL;
>  
> +    testSetupHostdevPrivateData(vm->def);
> +
>      for (i = 0; i < vm->def->ndisks; i++) {
>          virDomainDiskDef *disk = vm->def->disks[i];
>          virStorageSource *src;
> @@ -3050,6 +3079,10 @@ mymain(void)
>      DO_TEST_CAPS_LATEST_PARSE_ERROR("virtio-iommu-dma-translation");
>      DO_TEST_CAPS_LATEST("acpi-generic-initiator");
>  
> +    DO_TEST_CAPS_LATEST("iommufd");
> +    DO_TEST_CAPS_LATEST("iommufd-q35");
> +    DO_TEST_CAPS_ARCH_LATEST("iommufd-virt", "aarch64");
> +
>      DO_TEST_CAPS_LATEST("cpu-hotplug-startup");
>      DO_TEST_CAPS_ARCH_LATEST_PARSE_ERROR("cpu-hotplug-granularity", "ppc64");
>  
> -- 
> 2.43.0
> 

With regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|

Reply via email to