]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
conf: Introduce virtio model for <iommu>
authorAndrea Bolognani <abologna@redhat.com>
Thu, 23 Sep 2021 17:40:55 +0000 (19:40 +0200)
committerAndrea Bolognani <abologna@redhat.com>
Fri, 1 Apr 2022 17:30:59 +0000 (19:30 +0200)
Signed-off-by: Andrea Bolognani <abologna@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
src/conf/domain_conf.c
src/conf/domain_conf.h
src/conf/schemas/domaincommon.rng
src/qemu/qemu_command.c
src/qemu/qemu_domain_address.c
src/qemu/qemu_validate.c

index ba8dd7d7d075f838fe3d38f3eb6977878d7be408..2295d73ff2af39461ced1808cef0037ca46cee94 100644 (file)
@@ -1287,6 +1287,7 @@ VIR_ENUM_IMPL(virDomainIOMMUModel,
               VIR_DOMAIN_IOMMU_MODEL_LAST,
               "intel",
               "smmuv3",
+              "virtio",
 );
 
 VIR_ENUM_IMPL(virDomainVsockModel,
index c58fe3cb0f0e0eedb0790c2be86c4f28a8dae217..bad0004b3c714c82b7993645c21cf8b2579aee32 100644 (file)
@@ -2755,6 +2755,7 @@ G_DEFINE_AUTOPTR_CLEANUP_FUNC(virDomainSecDef, virDomainSecDefFree);
 typedef enum {
     VIR_DOMAIN_IOMMU_MODEL_INTEL,
     VIR_DOMAIN_IOMMU_MODEL_SMMUV3,
+    VIR_DOMAIN_IOMMU_MODEL_VIRTIO,
 
     VIR_DOMAIN_IOMMU_MODEL_LAST
 } virDomainIOMMUModel;
index 332694684218980d75f002e9937e85daf7c17d1c..3951ef3e04769d2c18ae0302963e52840f9040a4 100644 (file)
         <choice>
           <value>intel</value>
           <value>smmuv3</value>
+          <value>virtio</value>
         </choice>
       </attribute>
       <optional>
index 9180d5c317f4bbe8c47231c335a7707aa390858d..a6d4bb1cb14b0eca7195db6b64f5289ddfb03832 100644 (file)
@@ -6451,6 +6451,9 @@ qemuBuildIOMMUCommandLine(virCommand *cmd,
 
         return 0;
 
+    case VIR_DOMAIN_IOMMU_MODEL_VIRTIO:
+        return 0;
+
     case VIR_DOMAIN_IOMMU_MODEL_SMMUV3:
         /* There is no -device for SMMUv3, so nothing to be done here */
         return 0;
@@ -7037,6 +7040,7 @@ qemuBuildMachineCommandLine(virCommand *cmd,
             break;
 
         case VIR_DOMAIN_IOMMU_MODEL_INTEL:
+        case VIR_DOMAIN_IOMMU_MODEL_VIRTIO:
             /* These IOMMUs are formatted in qemuBuildIOMMUCommandLine */
             break;
 
index 6ca6fa54a34f6663b0aa052f938a4a55ce991f07..205610c53e3141530e242aaf2583334a6def72eb 100644 (file)
@@ -1004,6 +1004,9 @@ qemuDomainDeviceCalculatePCIConnectFlags(virDomainDeviceDef *dev,
 
     case VIR_DOMAIN_DEVICE_IOMMU:
         switch ((virDomainIOMMUModel) dev->data.iommu->model) {
+            case VIR_DOMAIN_IOMMU_MODEL_VIRTIO:
+                return 0;
+
             case VIR_DOMAIN_IOMMU_MODEL_INTEL:
             case VIR_DOMAIN_IOMMU_MODEL_SMMUV3:
             case VIR_DOMAIN_IOMMU_MODEL_LAST:
@@ -2382,6 +2385,9 @@ qemuDomainAssignDevicePCISlots(virDomainDef *def,
         virDomainIOMMUDef *iommu = def->iommu;
 
         switch ((virDomainIOMMUModel) iommu->model) {
+        case VIR_DOMAIN_IOMMU_MODEL_VIRTIO:
+            break;
+
         case VIR_DOMAIN_IOMMU_MODEL_INTEL:
         case VIR_DOMAIN_IOMMU_MODEL_SMMUV3:
         case VIR_DOMAIN_IOMMU_MODEL_LAST:
index e0708b8a762bf8d49ae26e0744dcc69459eea3d5..f2548a31ae519ab433dba42240ee291b7adb686f 100644 (file)
@@ -4865,6 +4865,9 @@ qemuValidateDomainDeviceDefIOMMU(const virDomainIOMMUDef *iommu,
         }
         break;
 
+    case VIR_DOMAIN_IOMMU_MODEL_VIRTIO:
+        break;
+
     case VIR_DOMAIN_IOMMU_MODEL_LAST:
     default:
         virReportEnumRangeError(virDomainIOMMUModel, iommu->model);