bhyve: auto-assign addresses when <address type='pci'/> is specified

Rather than only assigning a PCI address when no address is given at
all, also do it when the config says that the address type is 'pci',
but it gives no address.
This commit is contained in:
Laine Stump 2016-05-17 14:06:36 -04:00
parent 8f578716c7
commit d05da3fc72

View File

@ -98,7 +98,7 @@ bhyveAssignDevicePCISlots(virDomainDefPtr def,
goto error;
for (i = 0; i < def->nnets; i++) {
if (def->nets[i]->info.type != VIR_DOMAIN_DEVICE_ADDRESS_TYPE_NONE)
if (!virDeviceInfoPCIAddressWanted(&def->nets[i]->info))
continue;
if (virDomainPCIAddressReserveNextSlot(addrs,
&def->nets[i]->info,
@ -107,8 +107,7 @@ bhyveAssignDevicePCISlots(virDomainDefPtr def,
}
for (i = 0; i < def->ndisks; i++) {
if (def->disks[i]->info.type != VIR_DOMAIN_DEVICE_ADDRESS_TYPE_NONE &&
def->disks[i]->info.addr.pci.slot != 0)
if (!virDeviceInfoPCIAddressWanted(&def->disks[i]->info))
continue;
if (virDomainPCIAddressReserveNextSlot(addrs,
&def->disks[i]->info,
@ -118,9 +117,8 @@ bhyveAssignDevicePCISlots(virDomainDefPtr def,
for (i = 0; i < def->ncontrollers; i++) {
if (def->controllers[i]->type == VIR_DOMAIN_CONTROLLER_TYPE_PCI) {
if (def->controllers[i]->info.type != VIR_DOMAIN_DEVICE_ADDRESS_TYPE_NONE)
continue;
if (def->controllers[i]->model == VIR_DOMAIN_CONTROLLER_MODEL_PCI_ROOT)
if (def->controllers[i]->model == VIR_DOMAIN_CONTROLLER_MODEL_PCI_ROOT ||
!virDeviceInfoPCIAddressWanted(&def->controllers[i]->info))
continue;
if (virDomainPCIAddressReserveNextSlot(addrs,