if (!iommu)
return;
+ virDomainDeviceInfoClear(&iommu->info);
g_free(iommu);
}
return &device->data.panic->info;
case VIR_DOMAIN_DEVICE_MEMORY:
return &device->data.memory->info;
+ case VIR_DOMAIN_DEVICE_IOMMU:
+ return &device->data.iommu->info;
case VIR_DOMAIN_DEVICE_VSOCK:
return &device->data.vsock->info;
/* The following devices do not contain virDomainDeviceInfo */
case VIR_DOMAIN_DEVICE_LEASE:
case VIR_DOMAIN_DEVICE_GRAPHICS:
- case VIR_DOMAIN_DEVICE_IOMMU:
case VIR_DOMAIN_DEVICE_AUDIO:
case VIR_DOMAIN_DEVICE_LAST:
case VIR_DOMAIN_DEVICE_NONE:
return rc;
}
+ device.type = VIR_DOMAIN_DEVICE_IOMMU;
+ if (def->iommu) {
+ device.data.iommu = def->iommu;
+ if ((rc = cb(def, &device, &def->iommu->info, opaque)) != 0)
+ return rc;
+ }
+
device.type = VIR_DOMAIN_DEVICE_VSOCK;
if (def->vsock) {
device.data.vsock = def->vsock;
if ((rc = cb(def, &device, NULL, opaque)) != 0)
return rc;
}
- device.type = VIR_DOMAIN_DEVICE_IOMMU;
- if (def->iommu) {
- device.data.iommu = def->iommu;
- if ((rc = cb(def, &device, NULL, opaque)) != 0)
- return rc;
- }
}
/* Coverity is not very happy with this - all dead_error_condition */
static virDomainIOMMUDef *
-virDomainIOMMUDefParseXML(xmlNodePtr node,
- xmlXPathContextPtr ctxt)
+virDomainIOMMUDefParseXML(virDomainXMLOption *xmlopt,
+ xmlNodePtr node,
+ xmlXPathContextPtr ctxt,
+ unsigned int flags)
{
VIR_XPATH_NODE_AUTORESTORE(ctxt)
xmlNodePtr driver;
return NULL;
}
+ if (virDomainDeviceInfoParseXML(xmlopt, node, ctxt,
+ &iommu->info, flags) < 0)
+ return NULL;
+
return g_steal_pointer(&iommu);
}
return NULL;
break;
case VIR_DOMAIN_DEVICE_IOMMU:
- if (!(dev->data.iommu = virDomainIOMMUDefParseXML(node, ctxt)))
+ if (!(dev->data.iommu = virDomainIOMMUDefParseXML(xmlopt, node,
+ ctxt, flags)))
return NULL;
break;
case VIR_DOMAIN_DEVICE_VSOCK:
}
if (n > 0) {
- if (!(def->iommu = virDomainIOMMUDefParseXML(nodes[0], ctxt)))
+ if (!(def->iommu = virDomainIOMMUDefParseXML(xmlopt, nodes[0],
+ ctxt, flags)))
return NULL;
}
VIR_FREE(nodes);
return false;
}
- return true;
+ return virDomainDeviceInfoCheckABIStability(&src->info, &dst->info);
}
virXMLFormatElement(&childBuf, "driver", &driverAttrBuf, NULL);
+ virDomainDeviceInfoFormat(&childBuf, &iommu->info, 0);
+
virBufferAsprintf(&attrBuf, " model='%s'",
virDomainIOMMUModelTypeToString(iommu->model));