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@nvidia.com>
---
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