Red Hat Bugzilla – Bug 1339900
Tiny issue: PCI controller's index cannot be = bus
Last modified: 2016-11-03 14:45:55 EDT
Description of problem: When setting PCI controller's index = bus, define vm failed I got error like this # virsh define vm1-test.xml error: Failed to define domain from vm1-test.xml error: unsupported configuration: PCI controller at index 2 (0x02) has bus='0x02', but bus must be <= index PCI controller's index cannot be = bus, so the error message should be updated like this # virsh define vm1-test.xml error: Failed to define domain from vm1-test.xml error: unsupported configuration: PCI controller at index 2 (0x02) has bus='0x02', but bus must be < index Version-Release number of selected component (if applicable): libvirt-1.3.4-1.el7.x86_64 How reproducible: 100% Steps to Reproduce: 1. set pci-bridge controller's index=2, bus=0x02 <controller type='pci' index='0' model='pci-root'> <alias name='pci.0'/> </controller> <controller type='pci' index='1' model='pci-bridge'> <model name='pci-bridge'/> <target chassisNr='1'/> <alias name='pci.1'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x0b' function='0x0'/> </controller> <controller type='pci' index='2' model='pci-bridge'> <address type='pci' domain='0x0000' bus='0x02' slot='0x0c' function='0x0'/> </controller> # virsh define vm1-test.xml error: Failed to define domain from vm1-test.xml error: unsupported configuration: PCI controller at index 2 (0x02) has bus='0x02', but bus must be <= index Actual results: define vm fails when setting pci controller's index=bus Expected results: Update error message like this # virsh define vm1-test.xml error: Failed to define domain from vm1-test.xml error: unsupported configuration: PCI controller at index 2 (0x02) has bus='0x02', but bus must be < index Additional info:
Proposed upstream patch: https://www.redhat.com/archives/libvir-list/2016-May/msg01724.html
The fix has been merged upstream. commit c7289cf3b59aacd08dbc9047eda52c03b2837653 Author: Andrea Bolognani <abologna@redhat.com> Date: Mon May 23 18:00:36 2016 +0200 qemu: Fix error message when PCI bridge has index <= bus Commit ff2126225df0 changed the error message to be more detailed about the failure at hand; however, while the new error message claims that "bus must be <= index", the error message is displayed if "idx <= addr->bus", ie. when bus is larger than or *equal to* index. Change the error message to report the correct constraint, and format it in a way that mirrors the check exactly to make it clearer to people reading the code. The new error message reads "index must be larger than bus". Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1339900 v1.3.4-502-gc7289cf
Verify it on libvirt-2.0.0-5.el7.x86_64 Try to edit a domain's xml to: # virsh edit smart ... <controller type='pci' index='0' model='pci-root'/> <controller type='pci' index='1' model='pci-bridge'> <model name='pci-bridge'/> <target chassisNr='1'/> <alias name='pci.1'/> <address type='pci' domain='0x0000' bus='0x01' slot='0x0b' function='0x0'/> </controller> ... error: unsupported configuration: PCI controller at index 1 (0x01) has bus='0x01', but index must be larger than bus Failed. Try again? [y,n,i,f,?]: Try to create a domain with the xml above: # virsh create /tmp/smart error: Failed to create domain from /tmp/smart error: unsupported configuration: PCI controller at index 1 (0x01) has bus='0x01', but index must be larger than bus
Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA. For information on the advisory, and where to find the updated files, follow the link below. If the solution does not work for you, open a new bug report. https://rhn.redhat.com/errata/RHSA-2016-2577.html