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)


--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list

Reply via email to