[libvirt] [PATCH v3 06/18] qemu: use virDomainPCIAddressReserveNextAddr in qemuDomainAssignDevicePCISlots

Andrea Bolognani abologna at redhat.com
Sat Oct 1 21:35:42 UTC 2016


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




More information about the libvir-list mailing list