[libvirt] [PATCHv3 06/13] conf: new pci controller model "pcie-root-port"
Martin Kletzander
mkletzan at redhat.com
Mon Aug 3 10:17:45 UTC 2015
On Sat, Jul 25, 2015 at 03:58:30PM -0400, Laine Stump wrote:
>This controller can be connected (at domain startup time only - not
>hotpluggable) only to a port on the pcie root complex ("pcie-root" in
>libvirt config), hence the new connect type
>VIR_PCI_CONNECT_TYPE_PCIE_ROOT. It provides a hotpluggable port that
>will accept any PCI or PCIe device.
>
>New attributes must be added to the controller <target> subelement for
>this - chassis and port are guest-visible option values that will be
>set by libvirt with values derived from the controller's index and pci
>address information.
>---
>change from V2:
>
>* check chassis/port for 0-255 range
>* 1.3.0 -> 1.2.18
>
> docs/formatdomain.html.in | 33 +++++++++-
> docs/schemas/domaincommon.rng | 13 ++++
> src/conf/domain_addr.c | 10 ++-
> src/conf/domain_addr.h | 5 +-
> src/conf/domain_conf.c | 75 +++++++++++++++++++++-
> src/conf/domain_conf.h | 8 ++-
> src/qemu/qemu_command.c | 1 +
> .../qemuxml2argv-pcie-root-port.xml | 36 +++++++++++
> tests/qemuxml2xmltest.c | 1 +
> 9 files changed, 173 insertions(+), 9 deletions(-)
> create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-pcie-root-port.xml
>
>diff --git a/docs/formatdomain.html.in b/docs/formatdomain.html.in
>index fdf7e82..a9db924 100644
>--- a/docs/formatdomain.html.in
>+++ b/docs/formatdomain.html.in
>@@ -3123,6 +3141,17 @@
> auto-determined by libvirt will be placed on this pci-bridge
> device. (<span class="since">since 1.1.2</span>).
> </p>
>+ <p>
>+ Domains with an implicit pcie-root can also add controllers
>+ with <code>model='pcie-root-port'</code>. This is a simple type of
>+ bridge device that can connect only to one of the 31 slots on
>+ the pcie-root bus on the upstream side, and makes a single
>+ (PCIe, hotpluggable) port (at slot='0') available on the
>+ downstream side. This controller can be used to provide a single
>+ slot to later hotplug a PCIe device (but is not itself
>+ hotpluggable - it must be in the configuration when the domain
>+ is started). (<span class="since">since 1.2.18</span>)
s/18/19/
>diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
>index fbad7e9..f1723c0 100644
>--- a/src/conf/domain_conf.c
>+++ b/src/conf/domain_conf.c
>@@ -7972,6 +7980,57 @@ virDomainControllerDefParseXML(xmlNodePtr node,
> goto error;
> }
> }
>+ if (chassis) {
>+ if (virStrToLong_i(chassis, NULL, 0,
>+ &def->opts.pciopts.chassis) < 0) {
>+ virReportError(VIR_ERR_XML_ERROR,
>+ _("Invalid chassis '%s' in PCI controller"),
>+ chassis);
>+ goto error;
>+ }
>+ if (def->opts.pciopts.chassis < 0 ||
>+ def->opts.pciopts.chassisNr > 255) {
>+ virReportError(VIR_ERR_XML_ERROR,
>+ _("PCI controller chassis '%s' out of range "
>+ "- must be 0-255"),
>+ chassis);
>+ goto error;
>+ }
>+ }
This gets parsed twice, up here ^^ and down here vv, copy-paste error?
Remove one of those, please. I, personally don't care much which one,
none of them is my favourite :)
ACK with that changed
>+ if (chassis) {
>+ if (virStrToLong_i(chassis, NULL, 0,
>+ &def->opts.pciopts.chassis) < 0) {
>+ virReportError(VIR_ERR_XML_ERROR,
>+ _("Invalid chassis '%s' in PCI controller"),
>+ chassis);
>+ goto error;
>+ }
>+ if (def->opts.pciopts.chassis < 0 ||
>+ def->opts.pciopts.chassis > 255) {
>+ virReportError(VIR_ERR_XML_ERROR,
>+ _("PCI controller chassis '%s' out of range "
>+ "- must be 0-255"),
>+ chassis);
>+ goto error;
>+ }
>+ }
>+ if (port) {
>+ if (virStrToLong_i(port, NULL, 0,
>+ &def->opts.pciopts.port) < 0) {
>+ virReportError(VIR_ERR_XML_ERROR,
>+ _("Invalid port '%s' in PCI controller"),
>+ port);
>+ goto error;
>+ }
>+ if (def->opts.pciopts.port < 0 ||
>+ def->opts.pciopts.port > 255) {
>+ virReportError(VIR_ERR_XML_ERROR,
>+ _("PCI controller port '%s' out of range "
>+ "- must be 0-255"),
>+ port);
>+ goto error;
>+ }
>+ }
> break;
>
> default:
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20150803/b206e0dc/attachment-0001.sig>
More information about the libvir-list
mailing list