[libvirt] [PATCHv2 10/17] conf: new pci controller model "pcie-root-port"
Martin Kletzander
mkletzan at redhat.com
Fri Jul 24 16:07:09 UTC 2015
On Fri, Jul 17, 2015 at 02:43:37PM -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.
>---
> docs/formatdomain.html.in | 35 ++++++++++++++++++--
> docs/schemas/domaincommon.rng | 15 ++++++++-
> src/conf/domain_addr.c | 10 ++++--
> src/conf/domain_addr.h | 5 ++-
> src/conf/domain_conf.c | 37 ++++++++++++++++++++--
> src/conf/domain_conf.h | 7 +++-
> src/qemu/qemu_command.c | 1 +
> .../qemuxml2argv-pcie-root-port.xml | 36 +++++++++++++++++++++
> tests/qemuxml2xmltest.c | 1 +
> 9 files changed, 138 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 ae0d66a..dcbca75 100644
>--- a/docs/formatdomain.html.in
>+++ b/docs/formatdomain.html.in
>@@ -3070,6 +3071,25 @@
> (normally libvirt automatically sets this to the same value as
> the index attribute of the pci controller).
> </dd>
>+ <dt><code>chassis</code></dt>
>+ <dd>
>+ pcie-root-port controllers can also have
>+ a <code>chassis</code> attribute in
>+ the <code><model></code> subelement, which is used to
>+ control QEMU's "chassis" option for the device (normally
>+ libvirt automatically sets this to the same value as the index
>+ attribute of the pci controller).
Talking about QEMU-only options it feels like we're not abstracting
anything although trying to be an abstraction layer. But I don't have
any better explanation, so it's fine, I guess :)
Also I wouldn't mention how the number is calculated, just so you
don't need to mention that it might change.
>diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
>index 17526d4..e02c861 100644
>--- a/src/conf/domain_conf.c
>+++ b/src/conf/domain_conf.c
>@@ -7811,6 +7820,20 @@ virDomainControllerDefParseXML(xmlNodePtr node,
> chassisNr);
> goto error;
> }
>+ if (chassis && virStrToLong_i(chassis, NULL, 0,
>+ &def->opts.pciopts.chassis) < 0) {
You probably want to use _ui variants not just here, but throughout
the patches.
>@@ -18914,6 +18941,12 @@ virDomainControllerDefFormat(virBufferPtr buf,
> if (def->opts.pciopts.chassisNr != -1)
> virBufferAsprintf(buf, " chassisNr='%d'",
> def->opts.pciopts.chassisNr);
>+ if (def->opts.pciopts.chassis != -1)
>+ virBufferAsprintf(buf, " chassis='%d'",
>+ def->opts.pciopts.chassis);
>+ if (def->opts.pciopts.port != -1)
>+ virBufferAsprintf(buf, " port='0x%x'",
>+ def->opts.pciopts.port);
Just out of curiosity, why did you choose to format chassis as decimal
and and port as hexadecimal?
Negative tests wouldn't hurt ;)
-------------- 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/20150724/88aeabd5/attachment-0001.sig>
More information about the libvir-list
mailing list