Comment 7 for bug 1897528

Revision history for this message
Balazs Gibizer (balazs-gibizer) wrote :

I tested my above assumption and it seems it is the root of the problem.

The nova.pci.devspec.WhitelistPciAddress.match()[1] is called for every PCI device on the host at startup, including the ones with 32bit domain. And this reuses the nova.pci.devspec.PciAddressSpec._set_pci_dev_info() utility with maxval=0xFFFF for domains. So I can confirm that if the host has a PCI device with 32bit domain then nova compute will refuse to start. If the passthrough_whitelist config is empty then there is a shortcut in the startup sequence[3] skipping the iteration of the PCI devices on the host hence the problem disappear.

Marking this bug Confirmed. I will try to push a fix soon.

[1] https://github.com/openstack/nova/blob/2745e685376abbc4c32516837f6074a3de23aa24/nova/pci/devspec.py#L217
[2] https://github.com/openstack/nova/blob/2745e685376abbc4c32516837f6074a3de23aa24/nova/pci/devspec.py#L51
[3] https://github.com/openstack/nova/blob/2745e685376abbc4c32516837f6074a3de23aa24/nova/compute/manager.py#L1393