qemuUSBId() is just constructing what should already be in the alias for the USB controller that has the same index as the bus number listed for the device being connected, so replace calls to qemuUSBId() with the controller's alias. --- Pointed out by John during review. This is new in V2. It will be merged into 3/9 before pushing, but is split out here for easy review. src/qemu/qemu_command.c | 32 +++++++++++--------------------- 1 file changed, 11 insertions(+), 21 deletions(-) diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index 81305c1..eead482 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -2599,15 +2599,6 @@ qemuAssignDevicePCISlots(virDomainDefPtr def, return -1; } -static void -qemuUSBId(virBufferPtr buf, int idx) -{ - if (idx == 0) - virBufferAddLit(buf, "usb"); - else - virBufferAsprintf(buf, "usb%d", idx); -} - static int qemuBuildDeviceAddressStr(virBufferPtr buf, virDomainDefPtr domainDef, @@ -2616,9 +2607,9 @@ qemuBuildDeviceAddressStr(virBufferPtr buf, { int ret = -1; char *devStr = NULL; + const char *contAlias = NULL; if (info->type == VIR_DOMAIN_DEVICE_ADDRESS_TYPE_PCI) { - const char *contAlias = NULL; size_t i; if (!(devStr = virDomainPCIAddressAsString(&info->addr.pci))) @@ -2681,9 +2672,11 @@ qemuBuildDeviceAddressStr(virBufferPtr buf, if (info->addr.pci.function != 0) virBufferAsprintf(buf, ".0x%x", info->addr.pci.function); } else if (info->type == VIR_DOMAIN_DEVICE_ADDRESS_TYPE_USB) { - virBufferAddLit(buf, ",bus="); - qemuUSBId(buf, info->addr.usb.bus); - virBufferAsprintf(buf, ".0,port=%s", info->addr.usb.port); + if (!(contAlias = virDomainControllerAliasFind(domainDef, + VIR_DOMAIN_CONTROLLER_TYPE_USB, + info->addr.usb.bus))) + goto cleanup; + virBufferAsprintf(buf, ",bus=%s.0,port=%s", contAlias, info->addr.usb.port); } else if (info->type == VIR_DOMAIN_DEVICE_ADDRESS_TYPE_SPAPRVIO) { if (info->addr.spaprvio.has_reg) virBufferAsprintf(buf, ",reg=0x%llx", info->addr.spaprvio.reg); @@ -4450,14 +4443,11 @@ qemuBuildUSBControllerDevStr(virDomainDefPtr domainDef, virBufferAsprintf(buf, "%s", smodel); - if (def->info.mastertype == VIR_DOMAIN_CONTROLLER_MASTER_USB) { - virBufferAddLit(buf, ",masterbus="); - qemuUSBId(buf, def->idx); - virBufferAsprintf(buf, ".0,firstport=%d", def->info.master.usb.startport); - } else { - virBufferAddLit(buf, ",id="); - qemuUSBId(buf, def->idx); - } + if (def->info.mastertype == VIR_DOMAIN_CONTROLLER_MASTER_USB) + virBufferAsprintf(buf, ",masterbus=%s.0,firstport=%d", + def->info.alias, def->info.master.usb.startport); + else + virBufferAsprintf(buf, ",id=%s", def->info.alias); return 0; } -- 2.1.0 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list