This provides coverage for the scenario in which an attempt is made to use a USB device together with the legacy USB controller. Note that, while the test case passes, the configuration it produces doesn't actually work: $ qemu-system-x86_64 -M pc -usb -device usb-tablet,bus=usb.0 Bus 'usb.0' not found This is because the bus created by the legacy USB controller is automatically assigned ID "usb-bus.0", but libvirt doesn't take this into consideration when assigning addresses to USB devices. In other words, the legacy USB controller will only work as long as no attempt is made to attach devices to it, which arguably doesn't make for a very useful controller. Signed-off-by: Andrea Bolognani <abologna@xxxxxxxxxx> --- .../usb-legacy-device.x86_64-latest.args | 33 +++++++++++++++++++ .../usb-legacy-device.x86_64-latest.xml | 30 +++++++++++++++++ tests/qemuxmlconfdata/usb-legacy-device.xml | 15 +++++++++ tests/qemuxmlconftest.c | 5 +++ 4 files changed, 83 insertions(+) create mode 100644 tests/qemuxmlconfdata/usb-legacy-device.x86_64-latest.args create mode 100644 tests/qemuxmlconfdata/usb-legacy-device.x86_64-latest.xml create mode 100644 tests/qemuxmlconfdata/usb-legacy-device.xml diff --git a/tests/qemuxmlconfdata/usb-legacy-device.x86_64-latest.args b/tests/qemuxmlconfdata/usb-legacy-device.x86_64-latest.args new file mode 100644 index 0000000000..1ef9965cbd --- /dev/null +++ b/tests/qemuxmlconfdata/usb-legacy-device.x86_64-latest.args @@ -0,0 +1,33 @@ +LC_ALL=C \ +PATH=/bin \ +HOME=/var/lib/libvirt/qemu/domain--1-guest \ +USER=test \ +LOGNAME=test \ +XDG_DATA_HOME=/var/lib/libvirt/qemu/domain--1-guest/.local/share \ +XDG_CACHE_HOME=/var/lib/libvirt/qemu/domain--1-guest/.cache \ +XDG_CONFIG_HOME=/var/lib/libvirt/qemu/domain--1-guest/.config \ +/usr/bin/qemu-system-x86_64 \ +-name guest=guest,debug-threads=on \ +-S \ +-object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/var/lib/libvirt/qemu/domain--1-guest/master-key.aes"}' \ +-machine pc,usb=off,dump-guest-core=off,memory-backend=pc.ram,acpi=off \ +-accel tcg \ +-cpu qemu64 \ +-m size=4194304k \ +-object '{"qom-type":"memory-backend-ram","id":"pc.ram","size":4294967296}' \ +-overcommit mem-lock=off \ +-smp 4,sockets=4,cores=1,threads=1 \ +-uuid 1ccfd97d-5eb4-478a-bbe6-88d254c16db7 \ +-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 \ +-usb \ +-device '{"driver":"usb-tablet","id":"input0","bus":"usb.0","port":"1"}' \ +-audiodev '{"id":"audio1","driver":"none"}' \ +-sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,resourcecontrol=deny \ +-msg timestamp=on diff --git a/tests/qemuxmlconfdata/usb-legacy-device.x86_64-latest.xml b/tests/qemuxmlconfdata/usb-legacy-device.x86_64-latest.xml new file mode 100644 index 0000000000..2204c03380 --- /dev/null +++ b/tests/qemuxmlconfdata/usb-legacy-device.x86_64-latest.xml @@ -0,0 +1,30 @@ +<domain type='qemu'> + <name>guest</name> + <uuid>1ccfd97d-5eb4-478a-bbe6-88d254c16db7</uuid> + <memory unit='KiB'>4194304</memory> + <currentMemory unit='KiB'>4194304</currentMemory> + <vcpu placement='static'>4</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='usb' index='0'> + <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/> + </controller> + <controller type='pci' index='0' model='pci-root'/> + <input type='tablet' bus='usb'/> + <input type='mouse' bus='ps2'/> + <input type='keyboard' bus='ps2'/> + <audio id='1' type='none'/> + <memballoon model='none'/> + </devices> +</domain> diff --git a/tests/qemuxmlconfdata/usb-legacy-device.xml b/tests/qemuxmlconfdata/usb-legacy-device.xml new file mode 100644 index 0000000000..f85b293022 --- /dev/null +++ b/tests/qemuxmlconfdata/usb-legacy-device.xml @@ -0,0 +1,15 @@ +<domain type='qemu'> + <name>guest</name> + <uuid>1ccfd97d-5eb4-478a-bbe6-88d254c16db7</uuid> + <memory>4194304</memory> + <vcpu>4</vcpu> + <os> + <type arch='x86_64' machine='pc'>hvm</type> + </os> + <devices> + <emulator>/usr/bin/qemu-system-x86_64</emulator> + <controller type='usb'/> + <input type='tablet' bus='usb'/> + <memballoon model='none'/> + </devices> +</domain> diff --git a/tests/qemuxmlconftest.c b/tests/qemuxmlconftest.c index b9dcdb81b9..b7778975c3 100644 --- a/tests/qemuxmlconftest.c +++ b/tests/qemuxmlconftest.c @@ -1876,6 +1876,11 @@ mymain(void) ARG_FLAGS, FLAG_EXPECT_FAILURE, ARG_QEMU_CAPS_DEL, QEMU_CAPS_PIIX3_USB_UHCI, QEMU_CAPS_LAST, ARG_END); + DO_TEST_FULL("usb-legacy-device", ".x86_64-latest", + ARG_CAPS_ARCH, "x86_64", + ARG_CAPS_VER, "latest", + ARG_QEMU_CAPS_DEL, QEMU_CAPS_PIIX3_USB_UHCI, QEMU_CAPS_LAST, + ARG_END); DO_TEST_CAPS_LATEST("usb-none"); -- 2.43.0 _______________________________________________ Devel mailing list -- devel@xxxxxxxxxxxxxxxxx To unsubscribe send an email to devel-leave@xxxxxxxxxxxxxxxxx