<optional>
<ref name='power_management'/>
</optional>
+ <optional>
+ <ref name='iommu_support'/>
+ </optional>
<optional>
<ref name='migration'/>
</optional>
</element>
</define>
+ <define name='iommu_support'>
+ <element name='iommu'>
+ <optional>
+ <attribute name='support'>
+ <ref name='virYesNo'/>
+ </attribute>
+ </optional>
+ </element>
+ </define>
+
<define name='migration'>
<element name='migration_features'>
<optional>
virBufferAddLit(&buf, "<power_management/>\n");
}
+ virBufferAsprintf(&buf, "<iommu support='%s'/>\n",
+ caps->host.iommu ? "yes" : "no");
+
if (caps->host.offlineMigrate) {
virBufferAddLit(&buf, "<migration_features>\n");
virBufferAdjustIndent(&buf, 2);
virBitmapFree(cpus);
return ret;
}
+
+
+void
+virCapabilitiesHostInitIOMMU(virCapsPtr caps)
+{
+ caps->host.iommu = virHostHasIOMMU();
+}
int nPagesSize; /* size of pagesSize array */
unsigned int *pagesSize; /* page sizes support on the system */
unsigned char host_uuid[VIR_UUID_BUFLEN];
+ bool iommu;
};
typedef int (*virDomainDefNamespaceParse)(xmlDocPtr, xmlNodePtr,
int virCapabilitiesInitCaches(virCapsPtr caps);
+void virCapabilitiesHostInitIOMMU(virCapsPtr caps);
+
#endif /* __VIR_CAPABILITIES_H */
virCapabilitiesFreeNUMAInfo;
virCapabilitiesGetCpusForNodemask;
virCapabilitiesGetNodeInfo;
+virCapabilitiesHostInitIOMMU;
virCapabilitiesHostSecModelAddBaseLabel;
virCapabilitiesInitCaches;
virCapabilitiesInitNUMA;
if (virNodeSuspendGetTargetMask(&caps->host.powerMgmt) < 0)
VIR_WARN("Failed to get host power management capabilities");
+ /* Add IOMMU info */
+ virCapabilitiesHostInitIOMMU(caps);
+
/* Add huge pages info */
if (virCapabilitiesInitPages(caps) < 0)
VIR_WARN("Failed to get pages info");
if (virCapabilitiesAddHostFeature(caps, "nonpae") < 0)
goto error;
+ virCapabilitiesHostInitIOMMU(caps);
+
if (VIR_ALLOC_N(caps->host.pagesSize, 4) < 0)
goto error;
<arch>i686</arch>
</cpu>
<power_management/>
+ <iommu support='no'/>
</host>
<guest>
<arch>i686</arch>
</cpu>
<power_management/>
+ <iommu support='no'/>
</host>
<guest>
<arch>aarch64</arch>
</cpu>
<power_management/>
+ <iommu support='no'/>
<migration_features>
</migration_features>
<topology>
<arch>x86_64</arch>
</cpu>
<power_management/>
+ <iommu support='no'/>
<topology>
<cells num='4'>
<cell id='0'>
<arch>x86_64</arch>
</cpu>
<power_management/>
+ <iommu support='no'/>
<migration_features>
<live/>
</migration_features>
<arch>x86_64</arch>
</cpu>
<power_management/>
+ <iommu support='no'/>
<migration_features>
<live/>
</migration_features>
<arch>x86_64</arch>
</cpu>
<power_management/>
+ <iommu support='no'/>
<migration_features>
<live/>
</migration_features>
<arch>x86_64</arch>
</cpu>
<power_management/>
+ <iommu support='no'/>
<migration_features>
<live/>
</migration_features>
<arch>x86_64</arch>
</cpu>
<power_management/>
+ <iommu support='no'/>
<migration_features>
<live/>
</migration_features>