diff --git a/docs/formatnode.html.in b/docs/formatnode.html.in
index 76eae928dea597ea2ccbc884239e11fa231fe751..4ed43ec0cb1a6bba7104dbbd1826febd34239765 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 fe6ffa0b5318bbd6b4d6e077f58f6b3af3e7df13..ca3a79db87ed5b6d232a92e0f62491a49bc7f404 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 bccdbd0af82c600769bf5c0c2e1985102208b258..2ef4514f05e2afce04e0e743758cd5a563249fc3 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: