Bugzilla will be upgraded to version 5.0. The upgrade date is tentatively scheduled for 2 December 2018, pending final testing and feedback.
Bug 1339900 - Tiny issue: PCI controller's index cannot be = bus
Tiny issue: PCI controller's index cannot be = bus
Status: CLOSED ERRATA
Product: Red Hat Enterprise Linux 7
Classification: Red Hat
Component: libvirt (Show other bugs)
7.3
Unspecified Unspecified
unspecified Severity unspecified
: rc
: ---
Assigned To: Andrea Bolognani
Virtualization Bugs
:
Depends On:
Blocks:
  Show dependency treegraph
 
Reported: 2016-05-26 02:08 EDT by yangyang
Modified: 2016-11-03 14:45 EDT (History)
7 users (show)

See Also:
Fixed In Version: libvirt-1.3.5-1.el7
Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of:
Environment:
Last Closed: 2016-11-03 14:45:55 EDT
Type: Bug
Regression: ---
Mount Type: ---
Documentation: ---
CRM:
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---


Attachments (Terms of Use)


External Trackers
Tracker ID Priority Status Summary Last Updated
Red Hat Product Errata RHSA-2016:2577 normal SHIPPED_LIVE Moderate: libvirt security, bug fix, and enhancement update 2016-11-03 08:07:06 EDT

  None (edit)
Description yangyang 2016-05-26 02:08:46 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:
Comment 1 Ján Tomko 2016-05-26 03:23:59 EDT
Proposed upstream patch:
https://www.redhat.com/archives/libvir-list/2016-May/msg01724.html
Comment 2 Andrea Bolognani 2016-05-26 10:25:56 EDT
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
Comment 4 Han Han 2016-08-18 02:55:02 EDT
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
Comment 6 errata-xmlrpc 2016-11-03 14:45:55 EDT
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

Note You need to log in before you can comment on or make changes to this bug.