mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-01-11 15:27:47 +00:00
conf: simplify logic when checking for AUTOASSIGN PCI addresses
Old behavior: If the address was manually provided by config, copy device AUTOASSIGN flag into the bus flag, and then later on in the function *always* check for a match of the flags (which will always match if the address came from config, since we just copied it). New behavior: Don't mess with the bus flags - just directly check if the AUTOASSIGN flag matches in bus and dev, but only make the check if the address didn't come from config (i.e. it was auto-assigned by libvirt). Signed-off-by: Laine Stump <laine@redhat.com> Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
This commit is contained in:
parent
7c98f5e365
commit
fcdf87d3ef
@ -358,18 +358,22 @@ virDomainPCIAddressFlagsCompatible(virPCIDeviceAddressPtr addr,
|
||||
*/
|
||||
if (busFlags & VIR_PCI_CONNECT_TYPES_ENDPOINT)
|
||||
busFlags |= VIR_PCI_CONNECT_TYPES_ENDPOINT;
|
||||
/* Also allow manual specification of bus to override
|
||||
* libvirt's assumptions about whether or not hotplug
|
||||
* capability will be required.
|
||||
*/
|
||||
if (devFlags & VIR_PCI_CONNECT_AUTOASSIGN)
|
||||
busFlags |= VIR_PCI_CONNECT_AUTOASSIGN;
|
||||
/* if the device is a pci-bridge, allow manually
|
||||
* assigning to any bus that would also accept a
|
||||
* standard PCI device.
|
||||
*/
|
||||
if (devFlags & VIR_PCI_CONNECT_TYPE_PCI_BRIDGE)
|
||||
devFlags |= VIR_PCI_CONNECT_TYPE_PCI_DEVICE;
|
||||
} else if ((devFlags & VIR_PCI_CONNECT_AUTOASSIGN) &&
|
||||
!(busFlags & VIR_PCI_CONNECT_AUTOASSIGN)) {
|
||||
if (reportError) {
|
||||
virReportError(errType,
|
||||
_("The device at PCI address %s was auto-assigned "
|
||||
"this address, but the PCI controller "
|
||||
"with index='%d' doesn't allow auto-assignment"),
|
||||
addrStr, addr->bus);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/* If this bus doesn't allow the type of connection (PCI
|
||||
@ -419,17 +423,6 @@ virDomainPCIAddressFlagsCompatible(virPCIDeviceAddressPtr addr,
|
||||
addrStr, addr->bus, connectStr);
|
||||
return false;
|
||||
}
|
||||
if ((devFlags & VIR_PCI_CONNECT_AUTOASSIGN) &&
|
||||
!(busFlags & VIR_PCI_CONNECT_AUTOASSIGN)) {
|
||||
if (reportError) {
|
||||
virReportError(errType,
|
||||
_("The device at PCI address %s requires "
|
||||
"hotplug capability, but the PCI controller "
|
||||
"with index='%d' doesn't support hotplug"),
|
||||
addrStr, addr->bus);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user