From 384504f7ba5f5c885a642e94b123483a5534e873 Mon Sep 17 00:00:00 2001 From: =?utf8?q?J=C3=A1n=20Tomko?= Date: Fri, 27 Jan 2017 18:08:22 +0100 Subject: [PATCH] qemu: assign USB port on a selected hub for all devices Due to a logic error, the autofilling of USB port when a bus is specified:
does not work for non-hub devices on domain startup. Fix the logic in qemuDomainAssignUSBPortsIterator to also assign ports for USB addresses that do not yet have one. https://bugzilla.redhat.com/show_bug.cgi?id=1374128 --- src/qemu/qemu_domain_address.c | 7 ++++++- tests/qemuxml2argvdata/qemuxml2argv-usb-port-missing.args | 2 +- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/qemu/qemu_domain_address.c b/src/qemu/qemu_domain_address.c index 70482f2240..5b75044cec 100644 --- a/src/qemu/qemu_domain_address.c +++ b/src/qemu/qemu_domain_address.c @@ -2238,7 +2238,12 @@ qemuDomainAssignUSBPortsIterator(virDomainDeviceInfoPtr info, { struct qemuAssignUSBIteratorInfo *data = opaque; - if (info->type != VIR_DOMAIN_DEVICE_ADDRESS_TYPE_NONE) + if (info->type != VIR_DOMAIN_DEVICE_ADDRESS_TYPE_NONE && + info->type != VIR_DOMAIN_DEVICE_ADDRESS_TYPE_USB) + return 0; + + if (info->type == VIR_DOMAIN_DEVICE_ADDRESS_TYPE_USB && + virDomainUSBAddressPortIsValid(info->addr.usb.port)) return 0; return virDomainUSBAddressAssign(data->addrs, info); diff --git a/tests/qemuxml2argvdata/qemuxml2argv-usb-port-missing.args b/tests/qemuxml2argvdata/qemuxml2argv-usb-port-missing.args index ff743c8975..fbb328e114 100644 --- a/tests/qemuxml2argvdata/qemuxml2argv-usb-port-missing.args +++ b/tests/qemuxml2argvdata/qemuxml2argv-usb-port-missing.args @@ -22,5 +22,5 @@ server,nowait \ -usb \ -device usb-hub,id=hub0,bus=usb.0,port=1 \ -device usb-hub,id=hub1,bus=usb.0,port=2 \ --device usb-mouse,id=input0,bus=usb.0 \ +-device usb-mouse,id=input0,bus=usb.0,port=1.1 \ -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x3 -- 2.47.2