[PATCH 5/6] qemu: Add command line support for PCI high memory MMIO size

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Add support for generating QEMU command line with PCI high memory MMIO size:
- Add highmem-mmio-size to machine command line generation
- Add validation for aarch64/virt machine type requirement
- Add capability check for QEMU support
- Add feature validation in qemu_validate.c

This enables configuring the PCI high memory MMIO window size
for aarch64 virt machine types.

Signed-off-by: Matthew R. Ochs <mochs@xxxxxxxxxx>
---
 src/qemu/qemu_command.c  |  6 ++++++
 src/qemu/qemu_validate.c | 15 +++++++++++++++
 2 files changed, 21 insertions(+)

diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
index 7370711918b6..bf29cf74530f 100644
--- a/src/qemu/qemu_command.c
+++ b/src/qemu/qemu_command.c
@@ -6773,6 +6773,12 @@ qemuAppendDomainFeaturesMachineParam(virBuffer *buf,
         virBufferAsprintf(buf, ",aia=%s", str);
     }
 
+    if (def->features[VIR_DOMAIN_FEATURE_PCI] == VIR_TRISTATE_SWITCH_ON) {
+        if (def->pci && def->pci->highmemMMIOSize > 0) {
+            virBufferAsprintf(buf, ",highmem-mmio-size=%lluG",
+                              def->pci->highmemMMIOSize / (1024 * 1024 * 1024));
+        }
+    }
     return 0;
 }
 
diff --git a/src/qemu/qemu_validate.c b/src/qemu/qemu_validate.c
index 76f2eafe4955..9476dee49451 100644
--- a/src/qemu/qemu_validate.c
+++ b/src/qemu/qemu_validate.c
@@ -279,6 +279,21 @@ qemuValidateDomainDefFeatures(const virDomainDef *def,
             }
             break;
 
+        case VIR_DOMAIN_FEATURE_PCI:
+            if (def->features[i] != VIR_TRISTATE_SWITCH_ABSENT &&
+                !qemuDomainIsARMVirt(def)) {
+                virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
+                              _("features/pci is only supported with aarch64 virt machines"));
+                return -1;
+            }
+            if (def->features[i] != VIR_TRISTATE_SWITCH_ABSENT &&
+                !virQEMUCapsGet(qemuCaps, QEMU_CAPS_MACHINE_VIRT_HIGHMEM_MMIO_SIZE)) {
+                virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
+                              _("features/pci is not supported with this QEMU binary"));
+                return -1;
+            }
+            break;
+
         case VIR_DOMAIN_FEATURE_SMM:
         case VIR_DOMAIN_FEATURE_KVM:
         case VIR_DOMAIN_FEATURE_XEN:
-- 
2.46.0




[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]

  Powered by Linux