Assigning a PCI address needs to also assign any extension addresses right away. Otherwise they'd be assigned only after subsequent format->parse cycle and thus be potentially missing on first run after defining the VM and thus could change. Signed-off-by: Peter Krempa <pkrempa@xxxxxxxxxx> --- src/qemu/qemu_domain_address.c | 14 ++++++++++---- .../hostdev-vfio-zpci-boundaries.s390x-latest.xml | 4 +++- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/src/qemu/qemu_domain_address.c b/src/qemu/qemu_domain_address.c index 099778b2a8..979bc8a9fd 100644 --- a/src/qemu/qemu_domain_address.c +++ b/src/qemu/qemu_domain_address.c @@ -2829,10 +2829,16 @@ qemuDomainAssignPCIAddresses(virDomainDef *def, * controllers don't plug into any other PCI controller, hence * they should skip this step */ if (bus->model != VIR_DOMAIN_CONTROLLER_MODEL_PCI_ROOT && - bus->model != VIR_DOMAIN_CONTROLLER_MODEL_PCIE_ROOT && - qemuDomainPCIAddressReserveNextAddr(addrs, - &dev.data.controller->info) < 0) { - goto cleanup; + bus->model != VIR_DOMAIN_CONTROLLER_MODEL_PCIE_ROOT) { + if (qemuDomainPCIAddressReserveNextAddr(addrs, + &dev.data.controller->info) < 0) + goto cleanup; + + if (qemuDomainFillDevicePCIExtensionFlagsIter(NULL, &dev, &dev.data.controller->info, qemuCaps) < 0) + goto cleanup; + + if (qemuDomainAssignPCIAddressExtension(NULL, NULL, &dev.data.controller->info, addrs) < 0) + goto cleanup; } } diff --git a/tests/qemuxml2xmloutdata/hostdev-vfio-zpci-boundaries.s390x-latest.xml b/tests/qemuxml2xmloutdata/hostdev-vfio-zpci-boundaries.s390x-latest.xml index 8b0044af1c..6a4cf53313 100644 --- a/tests/qemuxml2xmloutdata/hostdev-vfio-zpci-boundaries.s390x-latest.xml +++ b/tests/qemuxml2xmloutdata/hostdev-vfio-zpci-boundaries.s390x-latest.xml @@ -21,7 +21,9 @@ <controller type='pci' index='1' model='pci-bridge'> <model name='pci-bridge'/> <target chassisNr='1'/> - <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x0'/> + <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x0'> + <zpci uid='0x0002' fid='0x00000001'/> + </address> </controller> <audio id='1' type='none'/> <hostdev mode='subsystem' type='pci' managed='no'> -- 2.43.0 _______________________________________________ Devel mailing list -- devel@xxxxxxxxxxxxxxxxx To unsubscribe send an email to devel-leave@xxxxxxxxxxxxxxxxx