[PATCH v3 0/2] conf: add support for 'edid' attribute to video model

This series adds support for a new 'edid' attribute to the video model to control whether the EDID is visible to the guest. If the 'edid' attribute is unspecified then it is not generated in the domain XML, so the underlying virtualisation platform will continue to use its default. The 'edid' attribute is only valid for the vga, boch and virtio display models and is currently only implemented for the QEMU driver. Signed-off-by: Mark Cave-Ayland <mark.caveayland@nutanix.com> v3 - Rebase onto master - Use backtacks for video models and values in docs/formatdomain.rst - Add edid attribute check in virDomainVideoDefCheckABIStability() - Remove disks from test XML files - Move video model edid attribute tests into the same section used by the existing video model tests v2 - Rebase onto master - Remove 2nd sentence from v1 patch 1 commit message - Remove unnecessary video->type check in qemu_command.c - Add patch 2 containing qemuxmlconftest test cases Mark Cave-Ayland (2): conf: add support for 'edid' attribute to video model tests/qemuxmlconfdata: add tests for video model 'edid' attribute docs/formatdomain.rst | 8 ++++ src/conf/domain_conf.c | 13 ++++++ src/conf/domain_conf.h | 1 + src/conf/domain_validate.c | 11 +++++ src/conf/schemas/domaincommon.rng | 5 +++ src/qemu/qemu_command.c | 3 ++ .../video-bochs-edid-none.x86_64-latest.args | 34 +++++++++++++++ .../video-bochs-edid-none.x86_64-latest.xml | 41 +++++++++++++++++++ .../qemuxmlconfdata/video-bochs-edid-none.xml | 30 ++++++++++++++ .../video-bochs-edid-off.x86_64-latest.args | 34 +++++++++++++++ .../video-bochs-edid-off.x86_64-latest.xml | 41 +++++++++++++++++++ .../qemuxmlconfdata/video-bochs-edid-off.xml | 30 ++++++++++++++ .../video-bochs-edid-on.x86_64-latest.args | 34 +++++++++++++++ .../video-bochs-edid-on.x86_64-latest.xml | 41 +++++++++++++++++++ tests/qemuxmlconfdata/video-bochs-edid-on.xml | 30 ++++++++++++++ .../video-qxl-edid-off-fail.x86_64-latest.err | 1 + .../video-qxl-edid-off-fail.xml | 23 +++++++++++ .../video-qxl-edid-on-fail.x86_64-latest.err | 1 + .../video-qxl-edid-on-fail.xml | 23 +++++++++++ .../video-vga-edid-none.x86_64-latest.args | 34 +++++++++++++++ .../video-vga-edid-none.x86_64-latest.xml | 41 +++++++++++++++++++ tests/qemuxmlconfdata/video-vga-edid-none.xml | 30 ++++++++++++++ .../video-vga-edid-off.x86_64-latest.args | 34 +++++++++++++++ .../video-vga-edid-off.x86_64-latest.xml | 41 +++++++++++++++++++ tests/qemuxmlconfdata/video-vga-edid-off.xml | 30 ++++++++++++++ .../video-vga-edid-on.x86_64-latest.args | 34 +++++++++++++++ .../video-vga-edid-on.x86_64-latest.xml | 41 +++++++++++++++++++ tests/qemuxmlconfdata/video-vga-edid-on.xml | 30 ++++++++++++++ .../video-virtio-edid-none.x86_64-latest.args | 34 +++++++++++++++ .../video-virtio-edid-none.x86_64-latest.xml | 41 +++++++++++++++++++ .../video-virtio-edid-none.xml | 30 ++++++++++++++ .../video-virtio-edid-off.x86_64-latest.args | 34 +++++++++++++++ .../video-virtio-edid-off.x86_64-latest.xml | 41 +++++++++++++++++++ .../qemuxmlconfdata/video-virtio-edid-off.xml | 30 ++++++++++++++ .../video-virtio-edid-on.x86_64-latest.args | 34 +++++++++++++++ .../video-virtio-edid-on.x86_64-latest.xml | 41 +++++++++++++++++++ .../qemuxmlconfdata/video-virtio-edid-on.xml | 30 ++++++++++++++ tests/qemuxmlconftest.c | 11 +++++ 38 files changed, 1045 insertions(+) create mode 100644 tests/qemuxmlconfdata/video-bochs-edid-none.x86_64-latest.args create mode 100644 tests/qemuxmlconfdata/video-bochs-edid-none.x86_64-latest.xml create mode 100644 tests/qemuxmlconfdata/video-bochs-edid-none.xml create mode 100644 tests/qemuxmlconfdata/video-bochs-edid-off.x86_64-latest.args create mode 100644 tests/qemuxmlconfdata/video-bochs-edid-off.x86_64-latest.xml create mode 100644 tests/qemuxmlconfdata/video-bochs-edid-off.xml create mode 100644 tests/qemuxmlconfdata/video-bochs-edid-on.x86_64-latest.args create mode 100644 tests/qemuxmlconfdata/video-bochs-edid-on.x86_64-latest.xml create mode 100644 tests/qemuxmlconfdata/video-bochs-edid-on.xml create mode 100644 tests/qemuxmlconfdata/video-qxl-edid-off-fail.x86_64-latest.err create mode 100644 tests/qemuxmlconfdata/video-qxl-edid-off-fail.xml create mode 100644 tests/qemuxmlconfdata/video-qxl-edid-on-fail.x86_64-latest.err create mode 100644 tests/qemuxmlconfdata/video-qxl-edid-on-fail.xml create mode 100644 tests/qemuxmlconfdata/video-vga-edid-none.x86_64-latest.args create mode 100644 tests/qemuxmlconfdata/video-vga-edid-none.x86_64-latest.xml create mode 100644 tests/qemuxmlconfdata/video-vga-edid-none.xml create mode 100644 tests/qemuxmlconfdata/video-vga-edid-off.x86_64-latest.args create mode 100644 tests/qemuxmlconfdata/video-vga-edid-off.x86_64-latest.xml create mode 100644 tests/qemuxmlconfdata/video-vga-edid-off.xml create mode 100644 tests/qemuxmlconfdata/video-vga-edid-on.x86_64-latest.args create mode 100644 tests/qemuxmlconfdata/video-vga-edid-on.x86_64-latest.xml create mode 100644 tests/qemuxmlconfdata/video-vga-edid-on.xml create mode 100644 tests/qemuxmlconfdata/video-virtio-edid-none.x86_64-latest.args create mode 100644 tests/qemuxmlconfdata/video-virtio-edid-none.x86_64-latest.xml create mode 100644 tests/qemuxmlconfdata/video-virtio-edid-none.xml create mode 100644 tests/qemuxmlconfdata/video-virtio-edid-off.x86_64-latest.args create mode 100644 tests/qemuxmlconfdata/video-virtio-edid-off.x86_64-latest.xml create mode 100644 tests/qemuxmlconfdata/video-virtio-edid-off.xml create mode 100644 tests/qemuxmlconfdata/video-virtio-edid-on.x86_64-latest.args create mode 100644 tests/qemuxmlconfdata/video-virtio-edid-on.x86_64-latest.xml create mode 100644 tests/qemuxmlconfdata/video-virtio-edid-on.xml -- 2.43.0

Signed-off-by: Mark Cave-Ayland <mark.caveayland@nutanix.com> Reviewed-by: Peter Krempa <pkrempa@redhat.com> --- .../video-bochs-edid-none.x86_64-latest.args | 34 +++++++++++++++ .../video-bochs-edid-none.x86_64-latest.xml | 41 +++++++++++++++++++ .../qemuxmlconfdata/video-bochs-edid-none.xml | 30 ++++++++++++++ .../video-bochs-edid-off.x86_64-latest.args | 34 +++++++++++++++ .../video-bochs-edid-off.x86_64-latest.xml | 41 +++++++++++++++++++ .../qemuxmlconfdata/video-bochs-edid-off.xml | 30 ++++++++++++++ .../video-bochs-edid-on.x86_64-latest.args | 34 +++++++++++++++ .../video-bochs-edid-on.x86_64-latest.xml | 41 +++++++++++++++++++ tests/qemuxmlconfdata/video-bochs-edid-on.xml | 30 ++++++++++++++ .../video-qxl-edid-off-fail.x86_64-latest.err | 1 + .../video-qxl-edid-off-fail.xml | 23 +++++++++++ .../video-qxl-edid-on-fail.x86_64-latest.err | 1 + .../video-qxl-edid-on-fail.xml | 23 +++++++++++ .../video-vga-edid-none.x86_64-latest.args | 34 +++++++++++++++ .../video-vga-edid-none.x86_64-latest.xml | 41 +++++++++++++++++++ tests/qemuxmlconfdata/video-vga-edid-none.xml | 30 ++++++++++++++ .../video-vga-edid-off.x86_64-latest.args | 34 +++++++++++++++ .../video-vga-edid-off.x86_64-latest.xml | 41 +++++++++++++++++++ tests/qemuxmlconfdata/video-vga-edid-off.xml | 30 ++++++++++++++ .../video-vga-edid-on.x86_64-latest.args | 34 +++++++++++++++ .../video-vga-edid-on.x86_64-latest.xml | 41 +++++++++++++++++++ tests/qemuxmlconfdata/video-vga-edid-on.xml | 30 ++++++++++++++ .../video-virtio-edid-none.x86_64-latest.args | 34 +++++++++++++++ .../video-virtio-edid-none.x86_64-latest.xml | 41 +++++++++++++++++++ .../video-virtio-edid-none.xml | 30 ++++++++++++++ .../video-virtio-edid-off.x86_64-latest.args | 34 +++++++++++++++ .../video-virtio-edid-off.x86_64-latest.xml | 41 +++++++++++++++++++ .../qemuxmlconfdata/video-virtio-edid-off.xml | 30 ++++++++++++++ .../video-virtio-edid-on.x86_64-latest.args | 34 +++++++++++++++ .../video-virtio-edid-on.x86_64-latest.xml | 41 +++++++++++++++++++ .../qemuxmlconfdata/video-virtio-edid-on.xml | 30 ++++++++++++++ tests/qemuxmlconftest.c | 11 +++++ 32 files changed, 1004 insertions(+) create mode 100644 tests/qemuxmlconfdata/video-bochs-edid-none.x86_64-latest.args create mode 100644 tests/qemuxmlconfdata/video-bochs-edid-none.x86_64-latest.xml create mode 100644 tests/qemuxmlconfdata/video-bochs-edid-none.xml create mode 100644 tests/qemuxmlconfdata/video-bochs-edid-off.x86_64-latest.args create mode 100644 tests/qemuxmlconfdata/video-bochs-edid-off.x86_64-latest.xml create mode 100644 tests/qemuxmlconfdata/video-bochs-edid-off.xml create mode 100644 tests/qemuxmlconfdata/video-bochs-edid-on.x86_64-latest.args create mode 100644 tests/qemuxmlconfdata/video-bochs-edid-on.x86_64-latest.xml create mode 100644 tests/qemuxmlconfdata/video-bochs-edid-on.xml create mode 100644 tests/qemuxmlconfdata/video-qxl-edid-off-fail.x86_64-latest.err create mode 100644 tests/qemuxmlconfdata/video-qxl-edid-off-fail.xml create mode 100644 tests/qemuxmlconfdata/video-qxl-edid-on-fail.x86_64-latest.err create mode 100644 tests/qemuxmlconfdata/video-qxl-edid-on-fail.xml create mode 100644 tests/qemuxmlconfdata/video-vga-edid-none.x86_64-latest.args create mode 100644 tests/qemuxmlconfdata/video-vga-edid-none.x86_64-latest.xml create mode 100644 tests/qemuxmlconfdata/video-vga-edid-none.xml create mode 100644 tests/qemuxmlconfdata/video-vga-edid-off.x86_64-latest.args create mode 100644 tests/qemuxmlconfdata/video-vga-edid-off.x86_64-latest.xml create mode 100644 tests/qemuxmlconfdata/video-vga-edid-off.xml create mode 100644 tests/qemuxmlconfdata/video-vga-edid-on.x86_64-latest.args create mode 100644 tests/qemuxmlconfdata/video-vga-edid-on.x86_64-latest.xml create mode 100644 tests/qemuxmlconfdata/video-vga-edid-on.xml create mode 100644 tests/qemuxmlconfdata/video-virtio-edid-none.x86_64-latest.args create mode 100644 tests/qemuxmlconfdata/video-virtio-edid-none.x86_64-latest.xml create mode 100644 tests/qemuxmlconfdata/video-virtio-edid-none.xml create mode 100644 tests/qemuxmlconfdata/video-virtio-edid-off.x86_64-latest.args create mode 100644 tests/qemuxmlconfdata/video-virtio-edid-off.x86_64-latest.xml create mode 100644 tests/qemuxmlconfdata/video-virtio-edid-off.xml create mode 100644 tests/qemuxmlconfdata/video-virtio-edid-on.x86_64-latest.args create mode 100644 tests/qemuxmlconfdata/video-virtio-edid-on.x86_64-latest.xml create mode 100644 tests/qemuxmlconfdata/video-virtio-edid-on.xml diff --git a/tests/qemuxmlconfdata/video-bochs-edid-none.x86_64-latest.args b/tests/qemuxmlconfdata/video-bochs-edid-none.x86_64-latest.args new file mode 100644 index 0000000000..c2ba47e6e7 --- /dev/null +++ b/tests/qemuxmlconfdata/video-bochs-edid-none.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 pc,usb=off,dump-guest-core=off,memory-backend=pc.ram,acpi=off \ +-accel tcg \ +-cpu qemu64 \ +-m size=1048576k \ +-object '{"qom-type":"memory-backend-memfd","id":"pc.ram","x-use-canonical-path-for-ramblock-id":false,"size":1073741824}' \ +-overcommit mem-lock=off \ +-smp 1,sockets=1,cores=1,threads=1 \ +-uuid df538144-b703-4b6d-860d-82ca8597d4c8 \ +-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"}' \ +-device '{"driver":"bochs-display","id":"video0","vgamem":16777216,"bus":"pci.0","addr":"0x2"}' \ +-device '{"driver":"virtio-balloon-pci","id":"balloon0","bus":"pci.0","addr":"0x3"}' \ +-sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,resourcecontrol=deny \ +-msg timestamp=on diff --git a/tests/qemuxmlconfdata/video-bochs-edid-none.x86_64-latest.xml b/tests/qemuxmlconfdata/video-bochs-edid-none.x86_64-latest.xml new file mode 100644 index 0000000000..5cdd202bf8 --- /dev/null +++ b/tests/qemuxmlconfdata/video-bochs-edid-none.x86_64-latest.xml @@ -0,0 +1,41 @@ +<domain type='qemu'> + <name>QEMUGuest1</name> + <uuid>df538144-b703-4b6d-860d-82ca8597d4c8</uuid> + <memory unit='KiB'>1048576</memory> + <currentMemory unit='KiB'>1048576</currentMemory> + <memoryBacking> + <source type='memfd'/> + </memoryBacking> + <vcpu placement='static'>1</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='ide' index='0'> + <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/> + </controller> + <controller type='usb' index='0' model='piix3-uhci'> + <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/> + </controller> + <controller type='pci' index='0' model='pci-root'/> + <input type='mouse' bus='ps2'/> + <input type='keyboard' bus='ps2'/> + <audio id='1' type='none'/> + <video> + <model type='bochs' vram='16384' heads='1' primary='yes'/> + <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/> + </video> + <memballoon model='virtio'> + <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/> + </memballoon> + </devices> +</domain> diff --git a/tests/qemuxmlconfdata/video-bochs-edid-none.xml b/tests/qemuxmlconfdata/video-bochs-edid-none.xml new file mode 100644 index 0000000000..e23377a52d --- /dev/null +++ b/tests/qemuxmlconfdata/video-bochs-edid-none.xml @@ -0,0 +1,30 @@ +<domain type='qemu'> + <name>QEMUGuest1</name> + <uuid>df538144-b703-4b6d-860d-82ca8597d4c8</uuid> + <memory unit='KiB'>1048576</memory> + <currentMemory unit='KiB'>1048576</currentMemory> + <memoryBacking> + <source type='memfd'/> + </memoryBacking> + <vcpu placement='static'>1</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='ide' index='0'/> + <controller type='usb' index='0'/> + <controller type='pci' index='0' model='pci-root'/> + <input type='mouse' bus='ps2'/> + <input type='keyboard' bus='ps2'/> + <video> + <model type='bochs' heads='1' primary='yes'/> + </video> + <memballoon model='virtio'/> + </devices> +</domain> diff --git a/tests/qemuxmlconfdata/video-bochs-edid-off.x86_64-latest.args b/tests/qemuxmlconfdata/video-bochs-edid-off.x86_64-latest.args new file mode 100644 index 0000000000..1b0835c59b --- /dev/null +++ b/tests/qemuxmlconfdata/video-bochs-edid-off.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 pc,usb=off,dump-guest-core=off,memory-backend=pc.ram,acpi=off \ +-accel tcg \ +-cpu qemu64 \ +-m size=1048576k \ +-object '{"qom-type":"memory-backend-memfd","id":"pc.ram","x-use-canonical-path-for-ramblock-id":false,"size":1073741824}' \ +-overcommit mem-lock=off \ +-smp 1,sockets=1,cores=1,threads=1 \ +-uuid df538144-b703-4b6d-860d-82ca8597d4c8 \ +-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"}' \ +-device '{"driver":"bochs-display","id":"video0","vgamem":16777216,"edid":false,"bus":"pci.0","addr":"0x2"}' \ +-device '{"driver":"virtio-balloon-pci","id":"balloon0","bus":"pci.0","addr":"0x3"}' \ +-sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,resourcecontrol=deny \ +-msg timestamp=on diff --git a/tests/qemuxmlconfdata/video-bochs-edid-off.x86_64-latest.xml b/tests/qemuxmlconfdata/video-bochs-edid-off.x86_64-latest.xml new file mode 100644 index 0000000000..8512f7e44c --- /dev/null +++ b/tests/qemuxmlconfdata/video-bochs-edid-off.x86_64-latest.xml @@ -0,0 +1,41 @@ +<domain type='qemu'> + <name>QEMUGuest1</name> + <uuid>df538144-b703-4b6d-860d-82ca8597d4c8</uuid> + <memory unit='KiB'>1048576</memory> + <currentMemory unit='KiB'>1048576</currentMemory> + <memoryBacking> + <source type='memfd'/> + </memoryBacking> + <vcpu placement='static'>1</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='ide' index='0'> + <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/> + </controller> + <controller type='usb' index='0' model='piix3-uhci'> + <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/> + </controller> + <controller type='pci' index='0' model='pci-root'/> + <input type='mouse' bus='ps2'/> + <input type='keyboard' bus='ps2'/> + <audio id='1' type='none'/> + <video> + <model type='bochs' vram='16384' heads='1' primary='yes' edid='off'/> + <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/> + </video> + <memballoon model='virtio'> + <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/> + </memballoon> + </devices> +</domain> diff --git a/tests/qemuxmlconfdata/video-bochs-edid-off.xml b/tests/qemuxmlconfdata/video-bochs-edid-off.xml new file mode 100644 index 0000000000..ae2684987c --- /dev/null +++ b/tests/qemuxmlconfdata/video-bochs-edid-off.xml @@ -0,0 +1,30 @@ +<domain type='qemu'> + <name>QEMUGuest1</name> + <uuid>df538144-b703-4b6d-860d-82ca8597d4c8</uuid> + <memory unit='KiB'>1048576</memory> + <currentMemory unit='KiB'>1048576</currentMemory> + <memoryBacking> + <source type='memfd'/> + </memoryBacking> + <vcpu placement='static'>1</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='ide' index='0'/> + <controller type='usb' index='0'/> + <controller type='pci' index='0' model='pci-root'/> + <input type='mouse' bus='ps2'/> + <input type='keyboard' bus='ps2'/> + <video> + <model type='bochs' heads='1' primary='yes' edid='off'/> + </video> + <memballoon model='virtio'/> + </devices> +</domain> diff --git a/tests/qemuxmlconfdata/video-bochs-edid-on.x86_64-latest.args b/tests/qemuxmlconfdata/video-bochs-edid-on.x86_64-latest.args new file mode 100644 index 0000000000..522aab4b14 --- /dev/null +++ b/tests/qemuxmlconfdata/video-bochs-edid-on.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 pc,usb=off,dump-guest-core=off,memory-backend=pc.ram,acpi=off \ +-accel tcg \ +-cpu qemu64 \ +-m size=1048576k \ +-object '{"qom-type":"memory-backend-memfd","id":"pc.ram","x-use-canonical-path-for-ramblock-id":false,"size":1073741824}' \ +-overcommit mem-lock=off \ +-smp 1,sockets=1,cores=1,threads=1 \ +-uuid df538144-b703-4b6d-860d-82ca8597d4c8 \ +-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"}' \ +-device '{"driver":"bochs-display","id":"video0","vgamem":16777216,"edid":true,"bus":"pci.0","addr":"0x2"}' \ +-device '{"driver":"virtio-balloon-pci","id":"balloon0","bus":"pci.0","addr":"0x3"}' \ +-sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,resourcecontrol=deny \ +-msg timestamp=on diff --git a/tests/qemuxmlconfdata/video-bochs-edid-on.x86_64-latest.xml b/tests/qemuxmlconfdata/video-bochs-edid-on.x86_64-latest.xml new file mode 100644 index 0000000000..af849752ec --- /dev/null +++ b/tests/qemuxmlconfdata/video-bochs-edid-on.x86_64-latest.xml @@ -0,0 +1,41 @@ +<domain type='qemu'> + <name>QEMUGuest1</name> + <uuid>df538144-b703-4b6d-860d-82ca8597d4c8</uuid> + <memory unit='KiB'>1048576</memory> + <currentMemory unit='KiB'>1048576</currentMemory> + <memoryBacking> + <source type='memfd'/> + </memoryBacking> + <vcpu placement='static'>1</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='ide' index='0'> + <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/> + </controller> + <controller type='usb' index='0' model='piix3-uhci'> + <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/> + </controller> + <controller type='pci' index='0' model='pci-root'/> + <input type='mouse' bus='ps2'/> + <input type='keyboard' bus='ps2'/> + <audio id='1' type='none'/> + <video> + <model type='bochs' vram='16384' heads='1' primary='yes' edid='on'/> + <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/> + </video> + <memballoon model='virtio'> + <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/> + </memballoon> + </devices> +</domain> diff --git a/tests/qemuxmlconfdata/video-bochs-edid-on.xml b/tests/qemuxmlconfdata/video-bochs-edid-on.xml new file mode 100644 index 0000000000..544c0c670b --- /dev/null +++ b/tests/qemuxmlconfdata/video-bochs-edid-on.xml @@ -0,0 +1,30 @@ +<domain type='qemu'> + <name>QEMUGuest1</name> + <uuid>df538144-b703-4b6d-860d-82ca8597d4c8</uuid> + <memory unit='KiB'>1048576</memory> + <currentMemory unit='KiB'>1048576</currentMemory> + <memoryBacking> + <source type='memfd'/> + </memoryBacking> + <vcpu placement='static'>1</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='ide' index='0'/> + <controller type='usb' index='0'/> + <controller type='pci' index='0' model='pci-root'/> + <input type='mouse' bus='ps2'/> + <input type='keyboard' bus='ps2'/> + <video> + <model type='bochs' heads='1' primary='yes' edid='on'/> + </video> + <memballoon model='virtio'/> + </devices> +</domain> diff --git a/tests/qemuxmlconfdata/video-qxl-edid-off-fail.x86_64-latest.err b/tests/qemuxmlconfdata/video-qxl-edid-off-fail.x86_64-latest.err new file mode 100644 index 0000000000..0b6759b905 --- /dev/null +++ b/tests/qemuxmlconfdata/video-qxl-edid-off-fail.x86_64-latest.err @@ -0,0 +1 @@ +unsupported configuration: video type 'qxl' does not support edid diff --git a/tests/qemuxmlconfdata/video-qxl-edid-off-fail.xml b/tests/qemuxmlconfdata/video-qxl-edid-off-fail.xml new file mode 100644 index 0000000000..34983358ea --- /dev/null +++ b/tests/qemuxmlconfdata/video-qxl-edid-off-fail.xml @@ -0,0 +1,23 @@ +<domain type='qemu'> + <name>QEMUGuest1</name> + <uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid> + <memory unit='KiB'>1048576</memory> + <currentMemory unit='KiB'>1048576</currentMemory> + <vcpu>1</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='ide' index='0'/> + <video> + <model type='qxl' heads='1' edid='off'/> + </video> + <memballoon model='virtio'/> + </devices> +</domain> diff --git a/tests/qemuxmlconfdata/video-qxl-edid-on-fail.x86_64-latest.err b/tests/qemuxmlconfdata/video-qxl-edid-on-fail.x86_64-latest.err new file mode 100644 index 0000000000..0b6759b905 --- /dev/null +++ b/tests/qemuxmlconfdata/video-qxl-edid-on-fail.x86_64-latest.err @@ -0,0 +1 @@ +unsupported configuration: video type 'qxl' does not support edid diff --git a/tests/qemuxmlconfdata/video-qxl-edid-on-fail.xml b/tests/qemuxmlconfdata/video-qxl-edid-on-fail.xml new file mode 100644 index 0000000000..e8c5ed45e8 --- /dev/null +++ b/tests/qemuxmlconfdata/video-qxl-edid-on-fail.xml @@ -0,0 +1,23 @@ +<domain type='qemu'> + <name>QEMUGuest1</name> + <uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid> + <memory unit='KiB'>1048576</memory> + <currentMemory unit='KiB'>1048576</currentMemory> + <vcpu>1</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='ide' index='0'/> + <video> + <model type='qxl' heads='1' edid='on'/> + </video> + <memballoon model='virtio'/> + </devices> +</domain> diff --git a/tests/qemuxmlconfdata/video-vga-edid-none.x86_64-latest.args b/tests/qemuxmlconfdata/video-vga-edid-none.x86_64-latest.args new file mode 100644 index 0000000000..0720c75549 --- /dev/null +++ b/tests/qemuxmlconfdata/video-vga-edid-none.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 pc,usb=off,dump-guest-core=off,memory-backend=pc.ram,acpi=off \ +-accel tcg \ +-cpu qemu64 \ +-m size=1048576k \ +-object '{"qom-type":"memory-backend-memfd","id":"pc.ram","x-use-canonical-path-for-ramblock-id":false,"size":1073741824}' \ +-overcommit mem-lock=off \ +-smp 1,sockets=1,cores=1,threads=1 \ +-uuid df538144-b703-4b6d-860d-82ca8597d4c8 \ +-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"}' \ +-device '{"driver":"VGA","id":"video0","vgamem_mb":16,"bus":"pci.0","addr":"0x2"}' \ +-device '{"driver":"virtio-balloon-pci","id":"balloon0","bus":"pci.0","addr":"0x3"}' \ +-sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,resourcecontrol=deny \ +-msg timestamp=on diff --git a/tests/qemuxmlconfdata/video-vga-edid-none.x86_64-latest.xml b/tests/qemuxmlconfdata/video-vga-edid-none.x86_64-latest.xml new file mode 100644 index 0000000000..74b0e534a7 --- /dev/null +++ b/tests/qemuxmlconfdata/video-vga-edid-none.x86_64-latest.xml @@ -0,0 +1,41 @@ +<domain type='qemu'> + <name>QEMUGuest1</name> + <uuid>df538144-b703-4b6d-860d-82ca8597d4c8</uuid> + <memory unit='KiB'>1048576</memory> + <currentMemory unit='KiB'>1048576</currentMemory> + <memoryBacking> + <source type='memfd'/> + </memoryBacking> + <vcpu placement='static'>1</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='ide' index='0'> + <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/> + </controller> + <controller type='usb' index='0' model='piix3-uhci'> + <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/> + </controller> + <controller type='pci' index='0' model='pci-root'/> + <input type='mouse' bus='ps2'/> + <input type='keyboard' bus='ps2'/> + <audio id='1' type='none'/> + <video> + <model type='vga' vram='16384' heads='1' primary='yes'/> + <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/> + </video> + <memballoon model='virtio'> + <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/> + </memballoon> + </devices> +</domain> diff --git a/tests/qemuxmlconfdata/video-vga-edid-none.xml b/tests/qemuxmlconfdata/video-vga-edid-none.xml new file mode 100644 index 0000000000..d7ec8b8f5e --- /dev/null +++ b/tests/qemuxmlconfdata/video-vga-edid-none.xml @@ -0,0 +1,30 @@ +<domain type='qemu'> + <name>QEMUGuest1</name> + <uuid>df538144-b703-4b6d-860d-82ca8597d4c8</uuid> + <memory unit='KiB'>1048576</memory> + <currentMemory unit='KiB'>1048576</currentMemory> + <memoryBacking> + <source type='memfd'/> + </memoryBacking> + <vcpu placement='static'>1</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='ide' index='0'/> + <controller type='usb' index='0'/> + <controller type='pci' index='0' model='pci-root'/> + <input type='mouse' bus='ps2'/> + <input type='keyboard' bus='ps2'/> + <video> + <model type='vga' heads='1' primary='yes'/> + </video> + <memballoon model='virtio'/> + </devices> +</domain> diff --git a/tests/qemuxmlconfdata/video-vga-edid-off.x86_64-latest.args b/tests/qemuxmlconfdata/video-vga-edid-off.x86_64-latest.args new file mode 100644 index 0000000000..b8af7d4af7 --- /dev/null +++ b/tests/qemuxmlconfdata/video-vga-edid-off.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 pc,usb=off,dump-guest-core=off,memory-backend=pc.ram,acpi=off \ +-accel tcg \ +-cpu qemu64 \ +-m size=1048576k \ +-object '{"qom-type":"memory-backend-memfd","id":"pc.ram","x-use-canonical-path-for-ramblock-id":false,"size":1073741824}' \ +-overcommit mem-lock=off \ +-smp 1,sockets=1,cores=1,threads=1 \ +-uuid df538144-b703-4b6d-860d-82ca8597d4c8 \ +-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"}' \ +-device '{"driver":"VGA","id":"video0","vgamem_mb":16,"edid":false,"bus":"pci.0","addr":"0x2"}' \ +-device '{"driver":"virtio-balloon-pci","id":"balloon0","bus":"pci.0","addr":"0x3"}' \ +-sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,resourcecontrol=deny \ +-msg timestamp=on diff --git a/tests/qemuxmlconfdata/video-vga-edid-off.x86_64-latest.xml b/tests/qemuxmlconfdata/video-vga-edid-off.x86_64-latest.xml new file mode 100644 index 0000000000..2df1da04cc --- /dev/null +++ b/tests/qemuxmlconfdata/video-vga-edid-off.x86_64-latest.xml @@ -0,0 +1,41 @@ +<domain type='qemu'> + <name>QEMUGuest1</name> + <uuid>df538144-b703-4b6d-860d-82ca8597d4c8</uuid> + <memory unit='KiB'>1048576</memory> + <currentMemory unit='KiB'>1048576</currentMemory> + <memoryBacking> + <source type='memfd'/> + </memoryBacking> + <vcpu placement='static'>1</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='ide' index='0'> + <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/> + </controller> + <controller type='usb' index='0' model='piix3-uhci'> + <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/> + </controller> + <controller type='pci' index='0' model='pci-root'/> + <input type='mouse' bus='ps2'/> + <input type='keyboard' bus='ps2'/> + <audio id='1' type='none'/> + <video> + <model type='vga' vram='16384' heads='1' primary='yes' edid='off'/> + <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/> + </video> + <memballoon model='virtio'> + <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/> + </memballoon> + </devices> +</domain> diff --git a/tests/qemuxmlconfdata/video-vga-edid-off.xml b/tests/qemuxmlconfdata/video-vga-edid-off.xml new file mode 100644 index 0000000000..55fea8e429 --- /dev/null +++ b/tests/qemuxmlconfdata/video-vga-edid-off.xml @@ -0,0 +1,30 @@ +<domain type='qemu'> + <name>QEMUGuest1</name> + <uuid>df538144-b703-4b6d-860d-82ca8597d4c8</uuid> + <memory unit='KiB'>1048576</memory> + <currentMemory unit='KiB'>1048576</currentMemory> + <memoryBacking> + <source type='memfd'/> + </memoryBacking> + <vcpu placement='static'>1</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='ide' index='0'/> + <controller type='usb' index='0'/> + <controller type='pci' index='0' model='pci-root'/> + <input type='mouse' bus='ps2'/> + <input type='keyboard' bus='ps2'/> + <video> + <model type='vga' heads='1' primary='yes' edid='off'/> + </video> + <memballoon model='virtio'/> + </devices> +</domain> diff --git a/tests/qemuxmlconfdata/video-vga-edid-on.x86_64-latest.args b/tests/qemuxmlconfdata/video-vga-edid-on.x86_64-latest.args new file mode 100644 index 0000000000..7c4145688c --- /dev/null +++ b/tests/qemuxmlconfdata/video-vga-edid-on.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 pc,usb=off,dump-guest-core=off,memory-backend=pc.ram,acpi=off \ +-accel tcg \ +-cpu qemu64 \ +-m size=1048576k \ +-object '{"qom-type":"memory-backend-memfd","id":"pc.ram","x-use-canonical-path-for-ramblock-id":false,"size":1073741824}' \ +-overcommit mem-lock=off \ +-smp 1,sockets=1,cores=1,threads=1 \ +-uuid df538144-b703-4b6d-860d-82ca8597d4c8 \ +-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"}' \ +-device '{"driver":"VGA","id":"video0","vgamem_mb":16,"edid":true,"bus":"pci.0","addr":"0x2"}' \ +-device '{"driver":"virtio-balloon-pci","id":"balloon0","bus":"pci.0","addr":"0x3"}' \ +-sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,resourcecontrol=deny \ +-msg timestamp=on diff --git a/tests/qemuxmlconfdata/video-vga-edid-on.x86_64-latest.xml b/tests/qemuxmlconfdata/video-vga-edid-on.x86_64-latest.xml new file mode 100644 index 0000000000..7e2b6a85c4 --- /dev/null +++ b/tests/qemuxmlconfdata/video-vga-edid-on.x86_64-latest.xml @@ -0,0 +1,41 @@ +<domain type='qemu'> + <name>QEMUGuest1</name> + <uuid>df538144-b703-4b6d-860d-82ca8597d4c8</uuid> + <memory unit='KiB'>1048576</memory> + <currentMemory unit='KiB'>1048576</currentMemory> + <memoryBacking> + <source type='memfd'/> + </memoryBacking> + <vcpu placement='static'>1</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='ide' index='0'> + <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/> + </controller> + <controller type='usb' index='0' model='piix3-uhci'> + <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/> + </controller> + <controller type='pci' index='0' model='pci-root'/> + <input type='mouse' bus='ps2'/> + <input type='keyboard' bus='ps2'/> + <audio id='1' type='none'/> + <video> + <model type='vga' vram='16384' heads='1' primary='yes' edid='on'/> + <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/> + </video> + <memballoon model='virtio'> + <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/> + </memballoon> + </devices> +</domain> diff --git a/tests/qemuxmlconfdata/video-vga-edid-on.xml b/tests/qemuxmlconfdata/video-vga-edid-on.xml new file mode 100644 index 0000000000..96ea8f7572 --- /dev/null +++ b/tests/qemuxmlconfdata/video-vga-edid-on.xml @@ -0,0 +1,30 @@ +<domain type='qemu'> + <name>QEMUGuest1</name> + <uuid>df538144-b703-4b6d-860d-82ca8597d4c8</uuid> + <memory unit='KiB'>1048576</memory> + <currentMemory unit='KiB'>1048576</currentMemory> + <memoryBacking> + <source type='memfd'/> + </memoryBacking> + <vcpu placement='static'>1</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='ide' index='0'/> + <controller type='usb' index='0'/> + <controller type='pci' index='0' model='pci-root'/> + <input type='mouse' bus='ps2'/> + <input type='keyboard' bus='ps2'/> + <video> + <model type='vga' heads='1' primary='yes' edid='on'/> + </video> + <memballoon model='virtio'/> + </devices> +</domain> diff --git a/tests/qemuxmlconfdata/video-virtio-edid-none.x86_64-latest.args b/tests/qemuxmlconfdata/video-virtio-edid-none.x86_64-latest.args new file mode 100644 index 0000000000..b0f4ec660b --- /dev/null +++ b/tests/qemuxmlconfdata/video-virtio-edid-none.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 pc,usb=off,dump-guest-core=off,memory-backend=pc.ram,acpi=off \ +-accel tcg \ +-cpu qemu64 \ +-m size=1048576k \ +-object '{"qom-type":"memory-backend-memfd","id":"pc.ram","x-use-canonical-path-for-ramblock-id":false,"size":1073741824}' \ +-overcommit mem-lock=off \ +-smp 1,sockets=1,cores=1,threads=1 \ +-uuid df538144-b703-4b6d-860d-82ca8597d4c8 \ +-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"}' \ +-device '{"driver":"virtio-vga","id":"video0","max_outputs":1,"bus":"pci.0","addr":"0x2"}' \ +-device '{"driver":"virtio-balloon-pci","id":"balloon0","bus":"pci.0","addr":"0x3"}' \ +-sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,resourcecontrol=deny \ +-msg timestamp=on diff --git a/tests/qemuxmlconfdata/video-virtio-edid-none.x86_64-latest.xml b/tests/qemuxmlconfdata/video-virtio-edid-none.x86_64-latest.xml new file mode 100644 index 0000000000..175828f44a --- /dev/null +++ b/tests/qemuxmlconfdata/video-virtio-edid-none.x86_64-latest.xml @@ -0,0 +1,41 @@ +<domain type='qemu'> + <name>QEMUGuest1</name> + <uuid>df538144-b703-4b6d-860d-82ca8597d4c8</uuid> + <memory unit='KiB'>1048576</memory> + <currentMemory unit='KiB'>1048576</currentMemory> + <memoryBacking> + <source type='memfd'/> + </memoryBacking> + <vcpu placement='static'>1</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='ide' index='0'> + <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/> + </controller> + <controller type='usb' index='0' model='piix3-uhci'> + <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/> + </controller> + <controller type='pci' index='0' model='pci-root'/> + <input type='mouse' bus='ps2'/> + <input type='keyboard' bus='ps2'/> + <audio id='1' type='none'/> + <video> + <model type='virtio' heads='1' primary='yes'/> + <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/> + </video> + <memballoon model='virtio'> + <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/> + </memballoon> + </devices> +</domain> diff --git a/tests/qemuxmlconfdata/video-virtio-edid-none.xml b/tests/qemuxmlconfdata/video-virtio-edid-none.xml new file mode 100644 index 0000000000..c8a9473fd4 --- /dev/null +++ b/tests/qemuxmlconfdata/video-virtio-edid-none.xml @@ -0,0 +1,30 @@ +<domain type='qemu'> + <name>QEMUGuest1</name> + <uuid>df538144-b703-4b6d-860d-82ca8597d4c8</uuid> + <memory unit='KiB'>1048576</memory> + <currentMemory unit='KiB'>1048576</currentMemory> + <memoryBacking> + <source type='memfd'/> + </memoryBacking> + <vcpu placement='static'>1</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='ide' index='0'/> + <controller type='usb' index='0'/> + <controller type='pci' index='0' model='pci-root'/> + <input type='mouse' bus='ps2'/> + <input type='keyboard' bus='ps2'/> + <video> + <model type='virtio' heads='1' primary='yes'/> + </video> + <memballoon model='virtio'/> + </devices> +</domain> diff --git a/tests/qemuxmlconfdata/video-virtio-edid-off.x86_64-latest.args b/tests/qemuxmlconfdata/video-virtio-edid-off.x86_64-latest.args new file mode 100644 index 0000000000..c63978111b --- /dev/null +++ b/tests/qemuxmlconfdata/video-virtio-edid-off.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 pc,usb=off,dump-guest-core=off,memory-backend=pc.ram,acpi=off \ +-accel tcg \ +-cpu qemu64 \ +-m size=1048576k \ +-object '{"qom-type":"memory-backend-memfd","id":"pc.ram","x-use-canonical-path-for-ramblock-id":false,"size":1073741824}' \ +-overcommit mem-lock=off \ +-smp 1,sockets=1,cores=1,threads=1 \ +-uuid df538144-b703-4b6d-860d-82ca8597d4c8 \ +-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"}' \ +-device '{"driver":"virtio-vga","id":"video0","max_outputs":1,"edid":false,"bus":"pci.0","addr":"0x2"}' \ +-device '{"driver":"virtio-balloon-pci","id":"balloon0","bus":"pci.0","addr":"0x3"}' \ +-sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,resourcecontrol=deny \ +-msg timestamp=on diff --git a/tests/qemuxmlconfdata/video-virtio-edid-off.x86_64-latest.xml b/tests/qemuxmlconfdata/video-virtio-edid-off.x86_64-latest.xml new file mode 100644 index 0000000000..35c01128b7 --- /dev/null +++ b/tests/qemuxmlconfdata/video-virtio-edid-off.x86_64-latest.xml @@ -0,0 +1,41 @@ +<domain type='qemu'> + <name>QEMUGuest1</name> + <uuid>df538144-b703-4b6d-860d-82ca8597d4c8</uuid> + <memory unit='KiB'>1048576</memory> + <currentMemory unit='KiB'>1048576</currentMemory> + <memoryBacking> + <source type='memfd'/> + </memoryBacking> + <vcpu placement='static'>1</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='ide' index='0'> + <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/> + </controller> + <controller type='usb' index='0' model='piix3-uhci'> + <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/> + </controller> + <controller type='pci' index='0' model='pci-root'/> + <input type='mouse' bus='ps2'/> + <input type='keyboard' bus='ps2'/> + <audio id='1' type='none'/> + <video> + <model type='virtio' heads='1' primary='yes' edid='off'/> + <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/> + </video> + <memballoon model='virtio'> + <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/> + </memballoon> + </devices> +</domain> diff --git a/tests/qemuxmlconfdata/video-virtio-edid-off.xml b/tests/qemuxmlconfdata/video-virtio-edid-off.xml new file mode 100644 index 0000000000..ed9c7b9e98 --- /dev/null +++ b/tests/qemuxmlconfdata/video-virtio-edid-off.xml @@ -0,0 +1,30 @@ +<domain type='qemu'> + <name>QEMUGuest1</name> + <uuid>df538144-b703-4b6d-860d-82ca8597d4c8</uuid> + <memory unit='KiB'>1048576</memory> + <currentMemory unit='KiB'>1048576</currentMemory> + <memoryBacking> + <source type='memfd'/> + </memoryBacking> + <vcpu placement='static'>1</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='ide' index='0'/> + <controller type='usb' index='0'/> + <controller type='pci' index='0' model='pci-root'/> + <input type='mouse' bus='ps2'/> + <input type='keyboard' bus='ps2'/> + <video> + <model type='virtio' heads='1' primary='yes' edid='off'/> + </video> + <memballoon model='virtio'/> + </devices> +</domain> diff --git a/tests/qemuxmlconfdata/video-virtio-edid-on.x86_64-latest.args b/tests/qemuxmlconfdata/video-virtio-edid-on.x86_64-latest.args new file mode 100644 index 0000000000..fba5ffc1c1 --- /dev/null +++ b/tests/qemuxmlconfdata/video-virtio-edid-on.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 pc,usb=off,dump-guest-core=off,memory-backend=pc.ram,acpi=off \ +-accel tcg \ +-cpu qemu64 \ +-m size=1048576k \ +-object '{"qom-type":"memory-backend-memfd","id":"pc.ram","x-use-canonical-path-for-ramblock-id":false,"size":1073741824}' \ +-overcommit mem-lock=off \ +-smp 1,sockets=1,cores=1,threads=1 \ +-uuid df538144-b703-4b6d-860d-82ca8597d4c8 \ +-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"}' \ +-device '{"driver":"virtio-vga","id":"video0","max_outputs":1,"edid":true,"bus":"pci.0","addr":"0x2"}' \ +-device '{"driver":"virtio-balloon-pci","id":"balloon0","bus":"pci.0","addr":"0x3"}' \ +-sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,resourcecontrol=deny \ +-msg timestamp=on diff --git a/tests/qemuxmlconfdata/video-virtio-edid-on.x86_64-latest.xml b/tests/qemuxmlconfdata/video-virtio-edid-on.x86_64-latest.xml new file mode 100644 index 0000000000..b6feb171c2 --- /dev/null +++ b/tests/qemuxmlconfdata/video-virtio-edid-on.x86_64-latest.xml @@ -0,0 +1,41 @@ +<domain type='qemu'> + <name>QEMUGuest1</name> + <uuid>df538144-b703-4b6d-860d-82ca8597d4c8</uuid> + <memory unit='KiB'>1048576</memory> + <currentMemory unit='KiB'>1048576</currentMemory> + <memoryBacking> + <source type='memfd'/> + </memoryBacking> + <vcpu placement='static'>1</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='ide' index='0'> + <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/> + </controller> + <controller type='usb' index='0' model='piix3-uhci'> + <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/> + </controller> + <controller type='pci' index='0' model='pci-root'/> + <input type='mouse' bus='ps2'/> + <input type='keyboard' bus='ps2'/> + <audio id='1' type='none'/> + <video> + <model type='virtio' heads='1' primary='yes' edid='on'/> + <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/> + </video> + <memballoon model='virtio'> + <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/> + </memballoon> + </devices> +</domain> diff --git a/tests/qemuxmlconfdata/video-virtio-edid-on.xml b/tests/qemuxmlconfdata/video-virtio-edid-on.xml new file mode 100644 index 0000000000..d61b495d7d --- /dev/null +++ b/tests/qemuxmlconfdata/video-virtio-edid-on.xml @@ -0,0 +1,30 @@ +<domain type='qemu'> + <name>QEMUGuest1</name> + <uuid>df538144-b703-4b6d-860d-82ca8597d4c8</uuid> + <memory unit='KiB'>1048576</memory> + <currentMemory unit='KiB'>1048576</currentMemory> + <memoryBacking> + <source type='memfd'/> + </memoryBacking> + <vcpu placement='static'>1</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='ide' index='0'/> + <controller type='usb' index='0'/> + <controller type='pci' index='0' model='pci-root'/> + <input type='mouse' bus='ps2'/> + <input type='keyboard' bus='ps2'/> + <video> + <model type='virtio' heads='1' primary='yes' edid='on'/> + </video> + <memballoon model='virtio'/> + </devices> +</domain> diff --git a/tests/qemuxmlconftest.c b/tests/qemuxmlconftest.c index 0d1804f101..265bba272d 100644 --- a/tests/qemuxmlconftest.c +++ b/tests/qemuxmlconftest.c @@ -2457,6 +2457,9 @@ mymain(void) DO_TEST_CAPS_LATEST("video-device-pciaddr-default"); DO_TEST_CAPS_LATEST("video-vga-device"); DO_TEST_CAPS_LATEST("video-vga-device-vgamem"); + DO_TEST_CAPS_LATEST("video-vga-edid-none"); + DO_TEST_CAPS_LATEST("video-vga-edid-off"); + DO_TEST_CAPS_LATEST("video-vga-edid-on"); DO_TEST_CAPS_LATEST("video-qxl-device"); DO_TEST_CAPS_LATEST("video-qxl-device-vgamem"); DO_TEST_CAPS_LATEST("video-qxl-device-vram64"); @@ -2467,6 +2470,8 @@ mymain(void) DO_TEST_CAPS_LATEST("video-vga-qxl-heads"); DO_TEST_CAPS_LATEST("video-qxl-noheads"); DO_TEST_CAPS_LATEST("video-qxl-resolution"); + DO_TEST_CAPS_LATEST_PARSE_ERROR("video-qxl-edid-off-fail"); + DO_TEST_CAPS_LATEST_PARSE_ERROR("video-qxl-edid-on-fail"); DO_TEST_CAPS_LATEST("video-virtio-gpu-device"); DO_TEST_CAPS_LATEST("video-virtio-gpu-virgl"); DO_TEST_CAPS_LATEST("video-virtio-gpu-spice-gl"); @@ -2476,7 +2481,13 @@ mymain(void) DO_TEST_CAPS_LATEST("video-virtio-blob-on"); DO_TEST_CAPS_LATEST("video-virtio-blob-off"); DO_TEST_CAPS_LATEST("video-virtio-vga-gpu-gl"); + DO_TEST_CAPS_LATEST("video-virtio-edid-none"); + DO_TEST_CAPS_LATEST("video-virtio-edid-off"); + DO_TEST_CAPS_LATEST("video-virtio-edid-on"); DO_TEST_CAPS_LATEST("video-bochs-display-device"); + DO_TEST_CAPS_LATEST("video-bochs-edid-none"); + DO_TEST_CAPS_LATEST("video-bochs-edid-off"); + DO_TEST_CAPS_LATEST("video-bochs-edid-on"); DO_TEST_CAPS_LATEST("video-ramfb-display-device"); DO_TEST_CAPS_LATEST_PARSE_ERROR("video-ramfb-display-device-pci-address"); DO_TEST_CAPS_LATEST("video-none-device"); -- 2.43.0

Add the ability to enable/disable exposing the EDID information to the guest. The edid attribute can specified in the domain XML as below: <video> <model type='virtio' edid='off'/> </video> If the edid attribute is unspecified, it is not generated so that the virtualisation platform will continue to use its default. The edid attribute is only valid for the vga, boch and virtio display models and is currently only implemented for the QEMU driver. Signed-off-by: Mark Cave-Ayland <mark.caveayland@nutanix.com> --- docs/formatdomain.rst | 8 ++++++++ src/conf/domain_conf.c | 13 +++++++++++++ src/conf/domain_conf.h | 1 + src/conf/domain_validate.c | 11 +++++++++++ src/conf/schemas/domaincommon.rng | 5 +++++ src/qemu/qemu_command.c | 3 +++ 6 files changed, 41 insertions(+) diff --git a/docs/formatdomain.rst b/docs/formatdomain.rst index d3c04d8b2a..9f7311b6d5 100644 --- a/docs/formatdomain.rst +++ b/docs/formatdomain.rst @@ -7110,6 +7110,14 @@ A video device. sub-element is valid for model types "vga", "qxl", "bochs", "gop", and "virtio". + :since:`Since 11.7.0` (QEMU driver only), the ``model`` element may have an + optional ``edid`` attribute that can be set to ``on`` or ``off``. If the + ``edid`` attribute is not specified then the device will use its default value. + Otherwise setting ``edid`` to ``on`` will expose the device EDID blob to the + guest, whilst setting it to ``off`` will hide the device EDID blob from the + guest. The ``edid`` attribute is only valid for model types ``vga``, ``bochs``, + and ``virtio``. + ``acceleration`` Configure if video acceleration should be enabled. diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index cb096f2e1e..7766e302ec 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -13547,6 +13547,9 @@ virDomainVideoModelDefParseXML(virDomainVideoDef *def, if (virXMLPropTristateSwitch(node, "blob", VIR_XML_PROP_NONE, &def->blob) < 0) return -1; + if (virXMLPropTristateSwitch(node, "edid", VIR_XML_PROP_NONE, &def->edid) < 0) + return -1; + return 0; } @@ -21051,6 +21054,14 @@ virDomainVideoDefCheckABIStability(virDomainVideoDef *src, } } + if (src->edid != dst->edid) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, + _("Target video card edid %1$s does not match source %2$s"), + virTristateSwitchTypeToString(dst->type), + virTristateSwitchTypeToString(src->type)); + return false; + } + if (!virDomainVirtioOptionsCheckABIStability(src->virtio, dst->virtio)) return false; @@ -26657,6 +26668,8 @@ virDomainVideoDefFormat(virBuffer *buf, virBufferAddLit(buf, " primary='yes'"); if (def->blob != VIR_TRISTATE_SWITCH_ABSENT) virBufferAsprintf(buf, " blob='%s'", virTristateSwitchTypeToString(def->blob)); + if (def->edid != VIR_TRISTATE_SWITCH_ABSENT) + virBufferAsprintf(buf, " edid='%s'", virTristateSwitchTypeToString(def->edid)); if (def->accel || def->res) { virBufferAddLit(buf, ">\n"); virBufferAdjustIndent(buf, 2); diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index 984e5bfc76..eca820892e 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -1895,6 +1895,7 @@ struct _virDomainVideoDef { virDomainDeviceInfo info; virDomainVirtioOptions *virtio; virDomainVideoBackendType backend; + virTristateSwitch edid; }; /* graphics console modes */ diff --git a/src/conf/domain_validate.c b/src/conf/domain_validate.c index 40edecef83..60a2e46b7e 100644 --- a/src/conf/domain_validate.c +++ b/src/conf/domain_validate.c @@ -231,6 +231,17 @@ virDomainVideoDefValidate(const virDomainVideoDef *video, } } + if ((video->type != VIR_DOMAIN_VIDEO_TYPE_BOCHS) && + (video->type != VIR_DOMAIN_VIDEO_TYPE_VGA) && + (video->type != VIR_DOMAIN_VIDEO_TYPE_VIRTIO)) { + if (video->edid != VIR_TRISTATE_SWITCH_ABSENT) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, + _("video type '%1$s' does not support edid"), + virDomainVideoTypeToString(video->type)); + return -1; + } + } + return 0; } diff --git a/src/conf/schemas/domaincommon.rng b/src/conf/schemas/domaincommon.rng index 9782dca147..e369fb6e81 100644 --- a/src/conf/schemas/domaincommon.rng +++ b/src/conf/schemas/domaincommon.rng @@ -4812,6 +4812,11 @@ <ref name="virOnOff"/> </attribute> </optional> + <optional> + <attribute name="edid"> + <ref name="virOnOff"/> + </attribute> + </optional> <optional> <element name="acceleration"> <optional> diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index 4e4f1e87eb..e8de386f30 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -4739,6 +4739,9 @@ qemuBuildDeviceVideoCmd(virCommand *cmd, return -1; } + if (virJSONValueObjectAdd(&props, "T:edid", video->edid, NULL) < 0) + return -1; + if (video->res) { if (virJSONValueObjectAdd(&props, "p:xres", video->res->x, -- 2.43.0

On Thu, Aug 07, 2025 at 12:05:08 +0100, Mark Cave-Ayland wrote:
This series adds support for a new 'edid' attribute to the video model to control whether the EDID is visible to the guest. If the 'edid' attribute is unspecified then it is not generated in the domain XML, so the underlying virtualisation platform will continue to use its default.
The 'edid' attribute is only valid for the vga, boch and virtio display models and is currently only implemented for the QEMU driver.
Signed-off-by: Mark Cave-Ayland <mark.caveayland@nutanix.com>
v3 - Rebase onto master - Use backtacks for video models and values in docs/formatdomain.rst - Add edid attribute check in virDomainVideoDefCheckABIStability() - Remove disks from test XML files - Move video model edid attribute tests into the same section used by the existing video model tests
v2 - Rebase onto master - Remove 2nd sentence from v1 patch 1 commit message - Remove unnecessary video->type check in qemu_command.c - Add patch 2 containing qemuxmlconftest test cases
Sorry for taking longer to notice this series, but the mailing list was broken for some time. Series: Reviewed-by: Peter Krempa <pkrempa@redhat.com> and pushed.

On 14/08/2025 11:49, Peter Krempa wrote:
On Thu, Aug 07, 2025 at 12:05:08 +0100, Mark Cave-Ayland wrote:
This series adds support for a new 'edid' attribute to the video model to control whether the EDID is visible to the guest. If the 'edid' attribute is unspecified then it is not generated in the domain XML, so the underlying virtualisation platform will continue to use its default.
The 'edid' attribute is only valid for the vga, boch and virtio display models and is currently only implemented for the QEMU driver.
Signed-off-by: Mark Cave-Ayland <mark.caveayland@nutanix.com>
v3 - Rebase onto master - Use backtacks for video models and values in docs/formatdomain.rst - Add edid attribute check in virDomainVideoDefCheckABIStability() - Remove disks from test XML files - Move video model edid attribute tests into the same section used by the existing video model tests
v2 - Rebase onto master - Remove 2nd sentence from v1 patch 1 commit message - Remove unnecessary video->type check in qemu_command.c - Add patch 2 containing qemuxmlconftest test cases
Sorry for taking longer to notice this series, but the mailing list was broken for some time.
Series:
Reviewed-by: Peter Krempa <pkrempa@redhat.com>
and pushed.
No worries, I completely understand it has been a difficult week without the mailing lists/archives working. Thanks once again for the review feedback, greatly appreciated. ATB, Mark.
participants (2)
-
Mark Cave-Ayland
-
Peter Krempa