From 9baffe90b5e8446f75f15b46bf06402b89d5dae2 Mon Sep 17 00:00:00 2001 From: Jonathon Jongsma Date: Thu, 18 Jun 2020 16:05:54 -0500 Subject: [PATCH] nodedev: make iommuGroup optional for mdevs When parsing a nodedev xml file, the iommuGroup element should be optional. This element should be read-only and is determined by the device driver. While this is a change to existing behavior, it doesn't break backwards-compatibility because it makes the parser less strict. Signed-off-by: Jonathon Jongsma Reviewed-by: Erik Skultety Reviewed-by: Michal Privoznik --- docs/formatnode.html.in | 5 +++-- docs/schemas/nodedev.rng | 12 +++++++----- src/conf/node_device_conf.c | 14 ++++++++------ 3 files changed, 18 insertions(+), 13 deletions(-) diff --git a/docs/formatnode.html.in b/docs/formatnode.html.in index 76eae928de..4ed43ec0cb 100644 --- a/docs/formatnode.html.in +++ b/docs/formatnode.html.in @@ -390,8 +390,9 @@
iommuGroup
This element supports a single attribute number - which holds the IOMMU group number the mediated device belongs - to. + which holds the IOMMU group number to which the mediated device + belongs. This is a read-only field that is reported by the + device driver.
diff --git a/docs/schemas/nodedev.rng b/docs/schemas/nodedev.rng index fe6ffa0b53..ca3a79db87 100644 --- a/docs/schemas/nodedev.rng +++ b/docs/schemas/nodedev.rng @@ -629,11 +629,13 @@ - - - - - + + + + + + + diff --git a/src/conf/node_device_conf.c b/src/conf/node_device_conf.c index bccdbd0af8..2ef4514f05 100644 --- a/src/conf/node_device_conf.c +++ b/src/conf/node_device_conf.c @@ -1775,13 +1775,15 @@ virNodeDevCapMdevParseXML(xmlXPathContextPtr ctxt, goto out; } - if (virNodeDevCapsDefParseULong("number(./iommuGroup[1]/@number)", ctxt, - &mdev->iommuGroupNumber, def, - _("missing iommuGroup number attribute for " - "'%s'"), - _("invalid iommuGroup number attribute for " - "'%s'")) < 0) + /* 'iommuGroup' is optional, only report an error if the supplied value is + * invalid (-2), not if it's missing (-1) */ + if (virXPathUInt("number(./iommuGroup[1]/@number)", + ctxt, &mdev->iommuGroupNumber) < -1) { + virReportError(VIR_ERR_INTERNAL_ERROR, + _("invalid iommuGroup number attribute for '%s'"), + def->name); goto out; + } ret = 0; out: -- GitLab