Another example of using a literal rather than the controller's alias in qemuBuildDeviceAddressStr(). In the past this was necessary because the pci controllers on non-multibus capable machinetypes had incorrect aliases; that problem is now fixed in qemuAssignDeviceControllerAlias() so we can eliminate the extra code here. --- 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 | 31 ++++++++----------------------- 1 file changed, 8 insertions(+), 23 deletions(-) diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index a3413ee..4c7c2b2 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -2664,30 +2664,15 @@ qemuBuildDeviceAddressStr(virBufferPtr buf, } } - /* - * PCI bridge support is required for multiple buses - * 'pci.%u' is the ID of the bridge as specified in - * qemuBuildControllerDevStr - * - * PCI_MULTIBUS capability indicates that the implicit - * PCI bus is named 'pci.0' instead of 'pci'. - */ - if (info->addr.pci.bus != 0) { - if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_DEVICE_PCI_BRIDGE)) { - virBufferAsprintf(buf, ",bus=%s", contAlias); - } else { - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", - _("Multiple PCI buses are not supported " - "with this QEMU binary")); - goto cleanup; - } - } else { - if (virQEMUCapsHasPCIMultiBus(qemuCaps, domainDef)) { - virBufferAsprintf(buf, ",bus=%s", contAlias); - } else { - virBufferAddLit(buf, ",bus=pci"); - } + if (info->addr.pci.bus != 0 && + !virQEMUCapsGet(qemuCaps, QEMU_CAPS_DEVICE_PCI_BRIDGE)) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("Multiple PCI buses are not supported " + "with this QEMU binary")); + goto cleanup; } + virBufferAsprintf(buf, ",bus=%s", contAlias); + if (info->addr.pci.multi == VIR_TRISTATE_SWITCH_ON) virBufferAddLit(buf, ",multifunction=on"); else if (info->addr.pci.multi == VIR_TRISTATE_SWITCH_OFF) -- 2.1.0 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list