[libvirt] [PATCH 0/2] qemu: Allow creating ppc64 guests with graphics and no USB mouse

See patch 2/2. Andrea Bolognani (2): tests: Add simple guests with graphics to qemuxml2argv qemu: Allow creating ppc64 guests with graphics and no USB mouse src/qemu/qemu_domain.c | 20 +++++++ .../aarch64-virt-graphics.aarch64-latest.args | 59 +++++++++++++++++++ .../aarch64-virt-graphics.xml | 50 ++++++++++++++++ .../ppc64-pseries-graphics.ppc64-latest.args | 47 +++++++++++++++ .../ppc64-pseries-graphics.xml | 44 ++++++++++++++ .../x86_64-pc-graphics.x86_64-latest.args | 51 ++++++++++++++++ tests/qemuxml2argvdata/x86_64-pc-graphics.xml | 55 +++++++++++++++++ .../x86_64-q35-graphics.x86_64-latest.args | 59 +++++++++++++++++++ .../qemuxml2argvdata/x86_64-q35-graphics.xml | 55 +++++++++++++++++ tests/qemuxml2argvtest.c | 6 ++ 10 files changed, 446 insertions(+) create mode 100644 tests/qemuxml2argvdata/aarch64-virt-graphics.aarch64-latest.args create mode 100644 tests/qemuxml2argvdata/aarch64-virt-graphics.xml create mode 100644 tests/qemuxml2argvdata/ppc64-pseries-graphics.ppc64-latest.args create mode 100644 tests/qemuxml2argvdata/ppc64-pseries-graphics.xml create mode 100644 tests/qemuxml2argvdata/x86_64-pc-graphics.x86_64-latest.args create mode 100644 tests/qemuxml2argvdata/x86_64-pc-graphics.xml create mode 100644 tests/qemuxml2argvdata/x86_64-q35-graphics.x86_64-latest.args create mode 100644 tests/qemuxml2argvdata/x86_64-q35-graphics.xml -- 2.20.1

These are similar to the existing simple headless guests, but also include a graphical output and some input devices. Input files were generated by running $ virt-install \ --name guest --os-variant fedora29 \ --vcpus 4 --memory 4096 --disk size=5 \ --graphics vnc \ --print-xml followed by minor tweaks. Signed-off-by: Andrea Bolognani <abologna@redhat.com> --- .../aarch64-virt-graphics.aarch64-latest.args | 59 +++++++++++++++++++ .../aarch64-virt-graphics.xml | 50 ++++++++++++++++ .../ppc64-pseries-graphics.ppc64-latest.args | 48 +++++++++++++++ .../ppc64-pseries-graphics.xml | 44 ++++++++++++++ .../x86_64-pc-graphics.x86_64-latest.args | 51 ++++++++++++++++ tests/qemuxml2argvdata/x86_64-pc-graphics.xml | 55 +++++++++++++++++ .../x86_64-q35-graphics.x86_64-latest.args | 59 +++++++++++++++++++ .../qemuxml2argvdata/x86_64-q35-graphics.xml | 55 +++++++++++++++++ tests/qemuxml2argvtest.c | 6 ++ 9 files changed, 427 insertions(+) create mode 100644 tests/qemuxml2argvdata/aarch64-virt-graphics.aarch64-latest.args create mode 100644 tests/qemuxml2argvdata/aarch64-virt-graphics.xml create mode 100644 tests/qemuxml2argvdata/ppc64-pseries-graphics.ppc64-latest.args create mode 100644 tests/qemuxml2argvdata/ppc64-pseries-graphics.xml create mode 100644 tests/qemuxml2argvdata/x86_64-pc-graphics.x86_64-latest.args create mode 100644 tests/qemuxml2argvdata/x86_64-pc-graphics.xml create mode 100644 tests/qemuxml2argvdata/x86_64-q35-graphics.x86_64-latest.args create mode 100644 tests/qemuxml2argvdata/x86_64-q35-graphics.xml diff --git a/tests/qemuxml2argvdata/aarch64-virt-graphics.aarch64-latest.args b/tests/qemuxml2argvdata/aarch64-virt-graphics.aarch64-latest.args new file mode 100644 index 0000000000..46111a5f23 --- /dev/null +++ b/tests/qemuxml2argvdata/aarch64-virt-graphics.aarch64-latest.args @@ -0,0 +1,59 @@ +LC_ALL=C \ +PATH=/bin \ +HOME=/home/test \ +USER=test \ +LOGNAME=test \ +QEMU_AUDIO_DRV=none \ +/usr/bin/qemu-system-aarch64 \ +-name guest=guest,debug-threads=on \ +-S \ +-object secret,id=masterKey0,format=raw,\ +file=/tmp/lib/domain--1-guest/master-key.aes \ +-machine virt,accel=tcg,usb=off,dump-guest-core=off,gic-version=2 \ +-drive file=/usr/share/AAVMF/AAVMF_CODE.fd,if=pflash,format=raw,unit=0,\ +readonly=on \ +-drive file=/var/lib/libvirt/qemu/nvram/guest_VARS.fd,if=pflash,format=raw,\ +unit=1 \ +-m 4096 \ +-realtime mlock=off \ +-smp 4,sockets=4,cores=1,threads=1 \ +-uuid 33844184-97c0-4cc0-aa7d-206f5803530b \ +-no-user-config \ +-nodefaults \ +-chardev socket,id=charmonitor,fd=1729,server,nowait \ +-mon chardev=charmonitor,id=monitor,mode=control \ +-rtc base=utc \ +-no-shutdown \ +-boot strict=on \ +-device pcie-root-port,port=0x8,chassis=1,id=pci.1,bus=pcie.0,multifunction=on,\ +addr=0x1 \ +-device pcie-root-port,port=0x9,chassis=2,id=pci.2,bus=pcie.0,addr=0x1.0x1 \ +-device pcie-root-port,port=0xa,chassis=3,id=pci.3,bus=pcie.0,addr=0x1.0x2 \ +-device pcie-root-port,port=0xb,chassis=4,id=pci.4,bus=pcie.0,addr=0x1.0x3 \ +-device pcie-root-port,port=0xc,chassis=5,id=pci.5,bus=pcie.0,addr=0x1.0x4 \ +-device pcie-root-port,port=0xd,chassis=6,id=pci.6,bus=pcie.0,addr=0x1.0x5 \ +-device pcie-root-port,port=0xe,chassis=7,id=pci.7,bus=pcie.0,addr=0x1.0x6 \ +-device qemu-xhci,p2=15,p3=15,id=usb,bus=pci.2,addr=0x0 \ +-device virtio-scsi-pci,id=scsi0,bus=pci.3,addr=0x0 \ +-device virtio-serial-pci,id=virtio-serial0,bus=pci.4,addr=0x0 \ +-drive file=/var/lib/libvirt/images/guest.qcow2,format=qcow2,if=none,\ +id=drive-scsi0-0-0-0 \ +-device scsi-hd,bus=scsi0.0,channel=0,scsi-id=0,lun=0,drive=drive-scsi0-0-0-0,\ +id=scsi0-0-0-0,bootindex=1 \ +-netdev user,id=hostnet0 \ +-device virtio-net-pci,netdev=hostnet0,id=net0,mac=52:54:00:53:45:a5,bus=pci.1,\ +addr=0x0 \ +-chardev pty,id=charserial0 \ +-serial chardev:charserial0 \ +-chardev socket,id=charchannel0,fd=1729,server,nowait \ +-device virtserialport,bus=virtio-serial0.0,nr=1,chardev=charchannel0,\ +id=channel0,name=org.qemu.guest_agent.0 \ +-device usb-tablet,id=input0,bus=usb.0,port=1 \ +-device usb-kbd,id=input1,bus=usb.0,port=2 \ +-vnc 127.0.0.1:0 \ +-device virtio-gpu-pci,id=video0,max_outputs=1,bus=pci.6,addr=0x0 \ +-object rng-random,id=objrng0,filename=/dev/urandom \ +-device virtio-rng-pci,rng=objrng0,id=rng0,bus=pci.5,addr=0x0 \ +-sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,\ +resourcecontrol=deny \ +-msg timestamp=on diff --git a/tests/qemuxml2argvdata/aarch64-virt-graphics.xml b/tests/qemuxml2argvdata/aarch64-virt-graphics.xml new file mode 100644 index 0000000000..95aef91beb --- /dev/null +++ b/tests/qemuxml2argvdata/aarch64-virt-graphics.xml @@ -0,0 +1,50 @@ +<domain type="qemu"> + <name>guest</name> + <uuid>33844184-97c0-4cc0-aa7d-206f5803530b</uuid> + <metadata> + <libosinfo:libosinfo xmlns:libosinfo="http://libosinfo.org/xmlns/libvirt/domain/1.0"> + <libosinfo:os id="http://fedoraproject.org/fedora/29"/> + </libosinfo:libosinfo> + </metadata> + <memory>4194304</memory> + <currentMemory>4194304</currentMemory> + <vcpu>4</vcpu> + <os> + <type arch="aarch64" machine="virt">hvm</type> + <loader readonly="yes" type="pflash">/usr/share/AAVMF/AAVMF_CODE.fd</loader> + <nvram>/var/lib/libvirt/qemu/nvram/guest_VARS.fd</nvram> + <boot dev="hd"/> + </os> + <features> + <acpi/> + </features> + <clock offset="utc"/> + <devices> + <emulator>/usr/bin/qemu-system-aarch64</emulator> + <disk type="file" device="disk"> + <driver name="qemu" type="qcow2"/> + <source file="/var/lib/libvirt/images/guest.qcow2"/> + <target dev="sda" bus="scsi"/> + </disk> + <controller type="usb" index="0" model="qemu-xhci" ports="15"/> + <controller type="scsi" index="0" model="virtio-scsi"/> + <interface type="user"> + <mac address="52:54:00:53:45:a5"/> + <model type="virtio"/> + </interface> + <console type="pty"/> + <channel type="unix"> + <source mode="bind"/> + <target type="virtio" name="org.qemu.guest_agent.0"/> + </channel> + <input type="tablet" bus="usb"/> + <input type="keyboard" bus="usb"/> + <graphics type="vnc" port="-1"/> + <video> + <model type="virtio"/> + </video> + <rng model="virtio"> + <backend model="random">/dev/urandom</backend> + </rng> + </devices> +</domain> diff --git a/tests/qemuxml2argvdata/ppc64-pseries-graphics.ppc64-latest.args b/tests/qemuxml2argvdata/ppc64-pseries-graphics.ppc64-latest.args new file mode 100644 index 0000000000..1c6c25ed24 --- /dev/null +++ b/tests/qemuxml2argvdata/ppc64-pseries-graphics.ppc64-latest.args @@ -0,0 +1,48 @@ +LC_ALL=C \ +PATH=/bin \ +HOME=/home/test \ +USER=test \ +LOGNAME=test \ +QEMU_AUDIO_DRV=none \ +/usr/bin/qemu-system-ppc64 \ +-name guest=guest,debug-threads=on \ +-S \ +-object secret,id=masterKey0,format=raw,\ +file=/tmp/lib/domain--1-guest/master-key.aes \ +-machine pseries,accel=tcg,usb=off,dump-guest-core=off \ +-m 4096 \ +-realtime mlock=off \ +-smp 4,sockets=4,cores=1,threads=1 \ +-uuid b35969f7-e7cf-4d90-a9a0-4dd9000f9824 \ +-no-user-config \ +-nodefaults \ +-chardev socket,id=charmonitor,fd=1729,server,nowait \ +-mon chardev=charmonitor,id=monitor,mode=control \ +-rtc base=utc \ +-no-shutdown \ +-boot strict=on \ +-device qemu-xhci,p2=15,p3=15,id=usb,bus=pci.0,addr=0x2 \ +-device virtio-serial-pci,id=virtio-serial0,bus=pci.0,addr=0x3 \ +-drive file=/var/lib/libvirt/images/guest.qcow2,format=qcow2,if=none,\ +id=drive-virtio-disk0 \ +-device virtio-blk-pci,scsi=off,bus=pci.0,addr=0x4,drive=drive-virtio-disk0,\ +id=virtio-disk0,bootindex=1 \ +-netdev user,id=hostnet0 \ +-device virtio-net-pci,netdev=hostnet0,id=net0,mac=52:54:00:a2:44:92,bus=pci.0,\ +addr=0x1 \ +-chardev pty,id=charserial0 \ +-device spapr-vty,chardev=charserial0,id=serial0,reg=0x30000000 \ +-chardev socket,id=charchannel0,fd=1729,server,nowait \ +-device virtserialport,bus=virtio-serial0.0,nr=1,chardev=charchannel0,\ +id=channel0,name=org.qemu.guest_agent.0 \ +-device usb-tablet,id=input0,bus=usb.0,port=1 \ +-device usb-kbd,id=input1,bus=usb.0,port=2 \ +-device usb-mouse,id=input2,bus=usb.0,port=3 \ +-vnc 127.0.0.1:0 \ +-device VGA,id=video0,vgamem_mb=16,bus=pci.0,addr=0x7 \ +-device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x5 \ +-object rng-random,id=objrng0,filename=/dev/urandom \ +-device virtio-rng-pci,rng=objrng0,id=rng0,bus=pci.0,addr=0x6 \ +-sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,\ +resourcecontrol=deny \ +-msg timestamp=on diff --git a/tests/qemuxml2argvdata/ppc64-pseries-graphics.xml b/tests/qemuxml2argvdata/ppc64-pseries-graphics.xml new file mode 100644 index 0000000000..3d54a4f171 --- /dev/null +++ b/tests/qemuxml2argvdata/ppc64-pseries-graphics.xml @@ -0,0 +1,44 @@ +<domain type="qemu"> + <name>guest</name> + <uuid>b35969f7-e7cf-4d90-a9a0-4dd9000f9824</uuid> + <metadata> + <libosinfo:libosinfo xmlns:libosinfo="http://libosinfo.org/xmlns/libvirt/domain/1.0"> + <libosinfo:os id="http://fedoraproject.org/fedora/29"/> + </libosinfo:libosinfo> + </metadata> + <memory>4194304</memory> + <currentMemory>4194304</currentMemory> + <vcpu>4</vcpu> + <os> + <type arch="ppc64le" machine="pseries">hvm</type> + <boot dev="hd"/> + </os> + <clock offset="utc"/> + <devices> + <emulator>/usr/bin/qemu-system-ppc64</emulator> + <disk type="file" device="disk"> + <driver name="qemu" type="qcow2"/> + <source file="/var/lib/libvirt/images/guest.qcow2"/> + <target dev="vda" bus="virtio"/> + </disk> + <controller type="usb" index="0" model="qemu-xhci" ports="15"/> + <interface type="user"> + <mac address="52:54:00:a2:44:92"/> + <model type="virtio"/> + </interface> + <console type="pty"/> + <channel type="unix"> + <source mode="bind"/> + <target type="virtio" name="org.qemu.guest_agent.0"/> + </channel> + <input type="tablet" bus="usb"/> + <input type="keyboard" bus="usb"/> + <graphics type="vnc" port="-1"/> + <video> + <model type="vga"/> + </video> + <rng model="virtio"> + <backend model="random">/dev/urandom</backend> + </rng> + </devices> +</domain> diff --git a/tests/qemuxml2argvdata/x86_64-pc-graphics.x86_64-latest.args b/tests/qemuxml2argvdata/x86_64-pc-graphics.x86_64-latest.args new file mode 100644 index 0000000000..ed8205204f --- /dev/null +++ b/tests/qemuxml2argvdata/x86_64-pc-graphics.x86_64-latest.args @@ -0,0 +1,51 @@ +LC_ALL=C \ +PATH=/bin \ +HOME=/home/test \ +USER=test \ +LOGNAME=test \ +QEMU_AUDIO_DRV=none \ +/usr/bin/qemu-system-x86_64 \ +-name guest=guest,debug-threads=on \ +-S \ +-object secret,id=masterKey0,format=raw,\ +file=/tmp/lib/domain--1-guest/master-key.aes \ +-machine pc,accel=tcg,usb=off,dump-guest-core=off \ +-m 4096 \ +-realtime mlock=off \ +-smp 4,sockets=4,cores=1,threads=1 \ +-uuid 2c0abd3d-8f18-42c0-a132-9708213aaac9 \ +-no-user-config \ +-nodefaults \ +-chardev socket,id=charmonitor,fd=1729,server,nowait \ +-mon chardev=charmonitor,id=monitor,mode=control \ +-rtc base=utc,driftfix=slew \ +-global kvm-pit.lost_tick_policy=delay \ +-no-hpet \ +-no-shutdown \ +-global PIIX4_PM.disable_s3=1 \ +-global PIIX4_PM.disable_s4=1 \ +-boot strict=on \ +-device qemu-xhci,p2=15,p3=15,id=usb,bus=pci.0,addr=0x4 \ +-device virtio-serial-pci,id=virtio-serial0,bus=pci.0,addr=0x5 \ +-drive file=/var/lib/libvirt/images/guest.qcow2,format=qcow2,if=none,\ +id=drive-virtio-disk0 \ +-device virtio-blk-pci,scsi=off,bus=pci.0,addr=0x6,drive=drive-virtio-disk0,\ +id=virtio-disk0,bootindex=1 \ +-netdev user,id=hostnet0 \ +-device virtio-net-pci,netdev=hostnet0,id=net0,mac=52:54:00:4c:e3:86,bus=pci.0,\ +addr=0x3 \ +-chardev pty,id=charserial0 \ +-device isa-serial,chardev=charserial0,id=serial0 \ +-chardev socket,id=charchannel0,fd=1729,server,nowait \ +-device virtserialport,bus=virtio-serial0.0,nr=1,chardev=charchannel0,\ +id=channel0,name=org.qemu.guest_agent.0 \ +-device usb-tablet,id=input0,bus=usb.0,port=1 \ +-vnc 127.0.0.1:0 \ +-device qxl-vga,id=video0,ram_size=67108864,vram_size=67108864,\ +vram64_size_mb=0,vgamem_mb=16,max_outputs=1,bus=pci.0,addr=0x2 \ +-device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x7 \ +-object rng-random,id=objrng0,filename=/dev/urandom \ +-device virtio-rng-pci,rng=objrng0,id=rng0,bus=pci.0,addr=0x8 \ +-sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,\ +resourcecontrol=deny \ +-msg timestamp=on diff --git a/tests/qemuxml2argvdata/x86_64-pc-graphics.xml b/tests/qemuxml2argvdata/x86_64-pc-graphics.xml new file mode 100644 index 0000000000..03745eabf4 --- /dev/null +++ b/tests/qemuxml2argvdata/x86_64-pc-graphics.xml @@ -0,0 +1,55 @@ +<domain type="qemu"> + <name>guest</name> + <uuid>2c0abd3d-8f18-42c0-a132-9708213aaac9</uuid> + <metadata> + <libosinfo:libosinfo xmlns:libosinfo="http://libosinfo.org/xmlns/libvirt/domain/1.0"> + <libosinfo:os id="http://fedoraproject.org/fedora/29"/> + </libosinfo:libosinfo> + </metadata> + <memory>4194304</memory> + <currentMemory>4194304</currentMemory> + <vcpu>4</vcpu> + <os> + <type arch="x86_64" machine="pc">hvm</type> + <boot dev="hd"/> + </os> + <features> + <acpi/> + <apic/> + </features> + <clock offset="utc"> + <timer name="rtc" tickpolicy="catchup"/> + <timer name="pit" tickpolicy="delay"/> + <timer name="hpet" present="no"/> + </clock> + <pm> + <suspend-to-mem enabled="no"/> + <suspend-to-disk enabled="no"/> + </pm> + <devices> + <emulator>/usr/bin/qemu-system-x86_64</emulator> + <disk type="file" device="disk"> + <driver name="qemu" type="qcow2"/> + <source file="/var/lib/libvirt/images/guest.qcow2"/> + <target dev="vda" bus="virtio"/> + </disk> + <controller type="usb" index="0" model="qemu-xhci" ports="15"/> + <interface type="user"> + <mac address="52:54:00:4c:e3:86"/> + <model type="virtio"/> + </interface> + <console type="pty"/> + <channel type="unix"> + <source mode="bind"/> + <target type="virtio" name="org.qemu.guest_agent.0"/> + </channel> + <input type="tablet" bus="usb"/> + <graphics type="vnc" port="-1"/> + <video> + <model type="qxl"/> + </video> + <rng model="virtio"> + <backend model="random">/dev/urandom</backend> + </rng> + </devices> +</domain> diff --git a/tests/qemuxml2argvdata/x86_64-q35-graphics.x86_64-latest.args b/tests/qemuxml2argvdata/x86_64-q35-graphics.x86_64-latest.args new file mode 100644 index 0000000000..54a1095704 --- /dev/null +++ b/tests/qemuxml2argvdata/x86_64-q35-graphics.x86_64-latest.args @@ -0,0 +1,59 @@ +LC_ALL=C \ +PATH=/bin \ +HOME=/home/test \ +USER=test \ +LOGNAME=test \ +QEMU_AUDIO_DRV=none \ +/usr/bin/qemu-system-x86_64 \ +-name guest=guest,debug-threads=on \ +-S \ +-object secret,id=masterKey0,format=raw,\ +file=/tmp/lib/domain--1-guest/master-key.aes \ +-machine q35,accel=tcg,usb=off,dump-guest-core=off \ +-m 4096 \ +-realtime mlock=off \ +-smp 4,sockets=4,cores=1,threads=1 \ +-uuid 61288c03-0b0d-4f1e-9496-0f0256f2e013 \ +-no-user-config \ +-nodefaults \ +-chardev socket,id=charmonitor,fd=1729,server,nowait \ +-mon chardev=charmonitor,id=monitor,mode=control \ +-rtc base=utc,driftfix=slew \ +-global kvm-pit.lost_tick_policy=delay \ +-no-hpet \ +-no-shutdown \ +-global ICH9-LPC.disable_s3=1 \ +-global ICH9-LPC.disable_s4=1 \ +-boot strict=on \ +-device pcie-root-port,port=0x10,chassis=1,id=pci.1,bus=pcie.0,\ +multifunction=on,addr=0x2 \ +-device pcie-root-port,port=0x11,chassis=2,id=pci.2,bus=pcie.0,addr=0x2.0x1 \ +-device pcie-root-port,port=0x12,chassis=3,id=pci.3,bus=pcie.0,addr=0x2.0x2 \ +-device pcie-root-port,port=0x13,chassis=4,id=pci.4,bus=pcie.0,addr=0x2.0x3 \ +-device pcie-root-port,port=0x14,chassis=5,id=pci.5,bus=pcie.0,addr=0x2.0x4 \ +-device pcie-root-port,port=0x15,chassis=6,id=pci.6,bus=pcie.0,addr=0x2.0x5 \ +-device pcie-root-port,port=0x16,chassis=7,id=pci.7,bus=pcie.0,addr=0x2.0x6 \ +-device qemu-xhci,p2=15,p3=15,id=usb,bus=pci.2,addr=0x0 \ +-device virtio-serial-pci,id=virtio-serial0,bus=pci.3,addr=0x0 \ +-drive file=/var/lib/libvirt/images/guest.qcow2,format=qcow2,if=none,\ +id=drive-virtio-disk0 \ +-device virtio-blk-pci,scsi=off,bus=pci.4,addr=0x0,drive=drive-virtio-disk0,\ +id=virtio-disk0,bootindex=1 \ +-netdev user,id=hostnet0 \ +-device virtio-net-pci,netdev=hostnet0,id=net0,mac=52:54:00:d2:70:0b,bus=pci.1,\ +addr=0x0 \ +-chardev pty,id=charserial0 \ +-device isa-serial,chardev=charserial0,id=serial0 \ +-chardev socket,id=charchannel0,fd=1729,server,nowait \ +-device virtserialport,bus=virtio-serial0.0,nr=1,chardev=charchannel0,\ +id=channel0,name=org.qemu.guest_agent.0 \ +-device usb-tablet,id=input0,bus=usb.0,port=1 \ +-vnc 127.0.0.1:0 \ +-device qxl-vga,id=video0,ram_size=67108864,vram_size=67108864,\ +vram64_size_mb=0,vgamem_mb=16,max_outputs=1,bus=pcie.0,addr=0x1 \ +-device virtio-balloon-pci,id=balloon0,bus=pci.5,addr=0x0 \ +-object rng-random,id=objrng0,filename=/dev/urandom \ +-device virtio-rng-pci,rng=objrng0,id=rng0,bus=pci.6,addr=0x0 \ +-sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,\ +resourcecontrol=deny \ +-msg timestamp=on diff --git a/tests/qemuxml2argvdata/x86_64-q35-graphics.xml b/tests/qemuxml2argvdata/x86_64-q35-graphics.xml new file mode 100644 index 0000000000..56db898e64 --- /dev/null +++ b/tests/qemuxml2argvdata/x86_64-q35-graphics.xml @@ -0,0 +1,55 @@ +<domain type="qemu"> + <name>guest</name> + <uuid>61288c03-0b0d-4f1e-9496-0f0256f2e013</uuid> + <metadata> + <libosinfo:libosinfo xmlns:libosinfo="http://libosinfo.org/xmlns/libvirt/domain/1.0"> + <libosinfo:os id="http://fedoraproject.org/fedora/29"/> + </libosinfo:libosinfo> + </metadata> + <memory>4194304</memory> + <currentMemory>4194304</currentMemory> + <vcpu>4</vcpu> + <os> + <type arch="x86_64" machine="q35">hvm</type> + <boot dev="hd"/> + </os> + <features> + <acpi/> + <apic/> + </features> + <clock offset="utc"> + <timer name="rtc" tickpolicy="catchup"/> + <timer name="pit" tickpolicy="delay"/> + <timer name="hpet" present="no"/> + </clock> + <pm> + <suspend-to-mem enabled="no"/> + <suspend-to-disk enabled="no"/> + </pm> + <devices> + <emulator>/usr/bin/qemu-system-x86_64</emulator> + <disk type="file" device="disk"> + <driver name="qemu" type="qcow2"/> + <source file="/var/lib/libvirt/images/guest.qcow2"/> + <target dev="vda" bus="virtio"/> + </disk> + <controller type="usb" index="0" model="qemu-xhci" ports="15"/> + <interface type="user"> + <mac address="52:54:00:d2:70:0b"/> + <model type="virtio"/> + </interface> + <console type="pty"/> + <channel type="unix"> + <source mode="bind"/> + <target type="virtio" name="org.qemu.guest_agent.0"/> + </channel> + <input type="tablet" bus="usb"/> + <graphics type="vnc" port="-1"/> + <video> + <model type="qxl"/> + </video> + <rng model="virtio"> + <backend model="random">/dev/urandom</backend> + </rng> + </devices> +</domain> diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c index dd4f73a5fb..01fcc91664 100644 --- a/tests/qemuxml2argvtest.c +++ b/tests/qemuxml2argvtest.c @@ -3004,6 +3004,12 @@ mymain(void) DO_TEST_CAPS_ARCH_LATEST("x86_64-pc-headless", "x86_64"); DO_TEST_CAPS_ARCH_LATEST("x86_64-q35-headless", "x86_64"); + /* Simple guests with graphics for various architectures */ + DO_TEST_CAPS_ARCH_LATEST("aarch64-virt-graphics", "aarch64"); + DO_TEST_CAPS_ARCH_LATEST("ppc64-pseries-graphics", "ppc64"); + DO_TEST_CAPS_ARCH_LATEST("x86_64-pc-graphics", "x86_64"); + DO_TEST_CAPS_ARCH_LATEST("x86_64-q35-graphics", "x86_64"); + if (getenv("LIBVIRT_SKIP_CLEANUP") == NULL) virFileDeleteTree(fakerootdir); -- 2.20.1

The existing behavior for ppc64 guests is to always add a USB keyboard and mouse combo if graphics are present; unfortunately, this means any attempt to use a USB tablet will cause both pointing devices to show up in the guest, which in turn will result in poor user experience. We can't just stop adding the USB mouse or start adding a USB tablet instead, because existing applications and user might rely on the current behavior; however, we can avoid adding the USB mouse if a USB tablet is already present, thus allowing users and applications to create guests that contain a single pointing device. https://bugzilla.redhat.com/show_bug.cgi?id=1683681 Signed-off-by: Andrea Bolognani <abologna@redhat.com> --- src/qemu/qemu_domain.c | 20 +++++++++++++++++++ .../ppc64-pseries-graphics.ppc64-latest.args | 1 - 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c index 59fe1eb401..915795ab84 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -3476,6 +3476,26 @@ qemuDomainDefAddDefaultDevices(virDomainDefPtr def, virQEMUCapsGet(qemuCaps, QEMU_CAPS_VIRTIO_S390) && def->memballoon) def->memballoon->model = VIR_DOMAIN_MEMBALLOON_MODEL_NONE; + if (addDefaultUSBMouse) { + bool hasUSBTablet = false; + size_t j; + + for (j = 0; j < def->ninputs; j++) { + if (def->inputs[j]->type == VIR_DOMAIN_INPUT_TYPE_TABLET && + def->inputs[j]->bus == VIR_DOMAIN_INPUT_BUS_USB) { + hasUSBTablet = true; + break; + } + } + + /* Historically, we have automatically added USB keyboard and + * mouse to some guests. While the former device is generally + * safe to have, adding the latter is undesiderable if a USB + * tablet is already present in the guest */ + if (hasUSBTablet) + addDefaultUSBMouse = false; + } + if (addDefaultUSBKBD && def->ngraphics > 0 && virDomainDefMaybeAddInput(def, diff --git a/tests/qemuxml2argvdata/ppc64-pseries-graphics.ppc64-latest.args b/tests/qemuxml2argvdata/ppc64-pseries-graphics.ppc64-latest.args index 1c6c25ed24..b81648f078 100644 --- a/tests/qemuxml2argvdata/ppc64-pseries-graphics.ppc64-latest.args +++ b/tests/qemuxml2argvdata/ppc64-pseries-graphics.ppc64-latest.args @@ -37,7 +37,6 @@ addr=0x1 \ id=channel0,name=org.qemu.guest_agent.0 \ -device usb-tablet,id=input0,bus=usb.0,port=1 \ -device usb-kbd,id=input1,bus=usb.0,port=2 \ --device usb-mouse,id=input2,bus=usb.0,port=3 \ -vnc 127.0.0.1:0 \ -device VGA,id=video0,vgamem_mb=16,bus=pci.0,addr=0x7 \ -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x5 \ -- 2.20.1

On 2/27/19 1:07 PM, Andrea Bolognani wrote:
See patch 2/2.
Andrea Bolognani (2): tests: Add simple guests with graphics to qemuxml2argv qemu: Allow creating ppc64 guests with graphics and no USB mouse
src/qemu/qemu_domain.c | 20 +++++++ .../aarch64-virt-graphics.aarch64-latest.args | 59 +++++++++++++++++++ .../aarch64-virt-graphics.xml | 50 ++++++++++++++++ .../ppc64-pseries-graphics.ppc64-latest.args | 47 +++++++++++++++ .../ppc64-pseries-graphics.xml | 44 ++++++++++++++ .../x86_64-pc-graphics.x86_64-latest.args | 51 ++++++++++++++++ tests/qemuxml2argvdata/x86_64-pc-graphics.xml | 55 +++++++++++++++++ .../x86_64-q35-graphics.x86_64-latest.args | 59 +++++++++++++++++++ .../qemuxml2argvdata/x86_64-q35-graphics.xml | 55 +++++++++++++++++ tests/qemuxml2argvtest.c | 6 ++ 10 files changed, 446 insertions(+) create mode 100644 tests/qemuxml2argvdata/aarch64-virt-graphics.aarch64-latest.args create mode 100644 tests/qemuxml2argvdata/aarch64-virt-graphics.xml create mode 100644 tests/qemuxml2argvdata/ppc64-pseries-graphics.ppc64-latest.args create mode 100644 tests/qemuxml2argvdata/ppc64-pseries-graphics.xml create mode 100644 tests/qemuxml2argvdata/x86_64-pc-graphics.x86_64-latest.args create mode 100644 tests/qemuxml2argvdata/x86_64-pc-graphics.xml create mode 100644 tests/qemuxml2argvdata/x86_64-q35-graphics.x86_64-latest.args create mode 100644 tests/qemuxml2argvdata/x86_64-q35-graphics.xml
Reviewed-by: Cole Robinson <crobinso@redhat.com> - Cole
participants (2)
-
Andrea Bolognani
-
Cole Robinson