conf: limit chassisNr, and busNr to a minimum value of 1, not 0

In the case of chassisNr (used to set chassis_nr of a pci-bridge
controller), 0 is reserved for / used by the pci[e]-root bus. In the
base of busNr, a value of 0 would mean that the root bus had no places
available to plug in new buses, including the pxb itself (the
documentation I wrote for pxb even noted the limit of busNr as 1.254).

NB: oddly, the "chassis" attribute, which is used for pcie-root-port
and pcie-switch-downstream-port *can* be set to 0, since it's the
combination of {chassis, slot} that needs to be unique, not chassis by
itself (and slot 0 of pcie-root is reserved, while pcie-*-port can use
*only* slot 0).

This resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1342962
This commit is contained in:
Laine Stump 2016-06-20 14:24:35 -04:00
parent f83ab972bc
commit df2fb9bfff
2 changed files with 5 additions and 5 deletions

View File

@ -3277,7 +3277,7 @@
control QEMU's "chassis_nr" option for the pci-bridge device control QEMU's "chassis_nr" option for the pci-bridge device
(normally libvirt automatically sets this to the same value as (normally libvirt automatically sets this to the same value as
the index attribute of the pci controller). If set, chassisNr the index attribute of the pci controller). If set, chassisNr
must be between 0 and 255. must be between 1 and 255.
</dd> </dd>
<dt><code>chassis</code></dt> <dt><code>chassis</code></dt>
<dd> <dd>

View File

@ -8405,11 +8405,11 @@ virDomainControllerDefParseXML(xmlNodePtr node,
chassisNr); chassisNr);
goto error; goto error;
} }
if (def->opts.pciopts.chassisNr < 0 || if (def->opts.pciopts.chassisNr < 1 ||
def->opts.pciopts.chassisNr > 255) { def->opts.pciopts.chassisNr > 255) {
virReportError(VIR_ERR_XML_ERROR, virReportError(VIR_ERR_XML_ERROR,
_("PCI controller chassisNr '%s' out of range " _("PCI controller chassisNr '%s' out of range "
"- must be 0-255"), "- must be 1-255"),
chassisNr); chassisNr);
goto error; goto error;
} }
@ -8456,11 +8456,11 @@ virDomainControllerDefParseXML(xmlNodePtr node,
busNr); busNr);
goto error; goto error;
} }
if (def->opts.pciopts.busNr < 0 || if (def->opts.pciopts.busNr < 1 ||
def->opts.pciopts.busNr > 254) { def->opts.pciopts.busNr > 254) {
virReportError(VIR_ERR_XML_ERROR, virReportError(VIR_ERR_XML_ERROR,
_("PCI controller busNr '%s' out of range " _("PCI controller busNr '%s' out of range "
"- must be 0-254"), "- must be 1-254"),
busNr); busNr);
goto error; goto error;
} }