On Tue, 2016-09-20 at 15:14 -0400, Laine Stump wrote: > instead of calling virDomainPCIAddressGetNextSlot() (which I want to > turn into a local static in domain_addr.c). > --- > src/qemu/qemu_domain_address.c | 31 +++++++++++++------------------ > 1 file changed, 13 insertions(+), 18 deletions(-) > > diff --git a/src/qemu/qemu_domain_address.c b/src/qemu/qemu_domain_address.c > index 7f86c32..5a19f0b 100644 > --- a/src/qemu/qemu_domain_address.c > +++ b/src/qemu/qemu_domain_address.c > @@ -1256,7 +1256,6 @@ qemuDomainAssignDevicePCISlots(virDomainDefPtr def, > { > size_t i, j; > virDomainPCIConnectFlags flags = 0; /* initialize to quiet gcc warning */ > - virPCIDeviceAddress tmp_addr; > > /* PCI controllers */ > for (i = 0; i < def->ncontrollers; i++) { > @@ -1360,7 +1359,6 @@ qemuDomainAssignDevicePCISlots(virDomainDefPtr def, > virPCIDeviceAddress addr = {0}; > bool foundAddr = false; > > - memset(&tmp_addr, 0, sizeof(tmp_addr)); > for (j = 0; j < def->ncontrollers; j++) { > if (IS_USB2_CONTROLLER(def->controllers[j]) && > def->controllers[j]->idx == cont->idx && > @@ -1390,26 +1388,23 @@ qemuDomainAssignDevicePCISlots(virDomainDefPtr def, > break; > } > > - if (!foundAddr) { > - /* This is the first part of the controller, so need > - * to find a free slot & then reserve a function */ > - if (virDomainPCIAddressGetNextSlot(addrs, &tmp_addr, flags) < 0) > + if (foundAddr) { > + /* Reserve this function on the slot we found */ > + if (virDomainPCIAddressReserveAddr(addrs, &addr, flags, > + false, true) < 0) > goto error; > > - addr.bus = tmp_addr.bus; > - addr.slot = tmp_addr.slot; > + cont->info.type = VIR_DOMAIN_DEVICE_ADDRESS_TYPE_PCI; > + cont->info.addr.pci = addr; > + } else { > + /* This is the first part of the controller, so need > + * to find a free slot & then reserve this function */ > + if (virDomainPCIAddressReserveNextAddr(addrs, &cont->info, flags, > + addr.function, false) < 0) This line is >80 columns. > + goto error; > > - addrs->lastaddr = addr; > - addrs->lastaddr.function = 0; > - addrs->lastaddr.multi = VIR_TRISTATE_SWITCH_ABSENT; > + cont->info.addr.pci.multi = addr.multi; > } > - /* Finally we can reserve the slot+function */ > - if (virDomainPCIAddressReserveAddr(addrs, &addr, flags, > - false, foundAddr) < 0) > - goto error; > - > - cont->info.type = VIR_DOMAIN_DEVICE_ADDRESS_TYPE_PCI; > - cont->info.addr.pci = addr; > } else { > if (virDomainPCIAddressReserveNextSlot(addrs, &cont->info, flags) < 0) > goto error; ACK -- Andrea Bolognani / Red Hat / Virtualization -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list