[libvirt] [PATCH 7/8] qemu: Wire up address type=pci auto_allocate

Laine Stump laine at laine.org
Wed Mar 23 18:20:21 UTC 2016


On 03/08/2016 11:36 AM, Cole Robinson wrote:
> We do this in 2 passes: before PCI addresses are about to be collected,
> we convert type=pci auto_allocate=true to type=none auto_allocate=true,
> since the existing code is already expecting type=none here.
>
> After all PCI allocation should be complete, we do another pass of the
> device addresses converting type=pci auto_allocate=true to
> auto_allocate=false, so we don't trigger the unallocated address
> validation check in generic domain code.

This sounds confusing. What about instead changing the existing code so 
that it checks for a valid PCI address instead of checking for 
type=none? A simple check for this is if domain == bus == slot == 0 (bus 
0 is *always* either a pcie-root or a pci-root, and for both of those 
slot 0 is reserved, so once an address has been assigned, it will never 
be 0000:00:00.x .)

So rather than doing this dance with type and auto_allocate, you can 
just modify the auto allocation to say:

     if (info->type == ...NONE ||
         (info->type == ...PCI && 
!virDevicePCIAddressIsValid(&info->addr.pci)) {

       // Bob Loblaw

     }

(virDevicePCIAddressIsValid() has some extra checks for values being too 
large, but does the essential check for domain/bus/slot == 0 as well)





More information about the libvir-list mailing list