96 lines
3.9 KiB
Diff
96 lines
3.9 KiB
Diff
From 782c337fb48b56a50ed85cbfe1dc3a8a1342ac08 Mon Sep 17 00:00:00 2001
|
|
Message-ID: <782c337fb48b56a50ed85cbfe1dc3a8a1342ac08.1744876588.git.jdenemar@redhat.com>
|
|
From: Michal Privoznik <mprivozn@redhat.com>
|
|
Date: Mon, 13 Jan 2025 15:48:03 +0100
|
|
Subject: [PATCH] qemu_command: Use qemuBuildVirtioDevProps() to build cmd line
|
|
for virtio-mem and virtio-pmem
|
|
|
|
Both, virtio-mem and virtio-pmem devices follow traditional QEMU
|
|
naming convention: their suffix determines what bus they live on.
|
|
For instance, virtio-mem-pci, virtio-mem-ccw, virtio-pmem-pci.
|
|
We already have a function that constructs device name following
|
|
this convention: qemuBuildVirtioDevGetConfigDev().
|
|
|
|
While there's no virtio-pmem-ccw device yet, the function can
|
|
still be used.
|
|
|
|
Another advantage of using the function is - it'll be easier in
|
|
future when we want to configure various virtio aspects of memory
|
|
devices (like ats, iommu_platform, etc.).
|
|
|
|
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
|
|
Reviewed-by: Boris Fiuczynski <fiuczy@linux.ibm.com>
|
|
(cherry picked from commit 89d56c41ac16452eb5f6f27eb87658277b270f83)
|
|
Resolves: https://issues.redhat.com/browse/RHEL-72976
|
|
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
|
|
---
|
|
src/qemu/qemu_command.c | 28 ++++++++++++++++++++++++----
|
|
1 file changed, 24 insertions(+), 4 deletions(-)
|
|
|
|
diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
|
|
index b7d61edd19..fb70c79a94 100644
|
|
--- a/src/qemu/qemu_command.c
|
|
+++ b/src/qemu/qemu_command.c
|
|
@@ -967,6 +967,23 @@ qemuBuildVirtioDevGetConfigDev(const virDomainDeviceDef *device,
|
|
break;
|
|
}
|
|
|
|
+ case VIR_DOMAIN_DEVICE_MEMORY:
|
|
+ switch (device->data.memory->model) {
|
|
+ case VIR_DOMAIN_MEMORY_MODEL_VIRTIO_PMEM:
|
|
+ *baseName = "virtio-pmem";
|
|
+ break;
|
|
+ case VIR_DOMAIN_MEMORY_MODEL_VIRTIO_MEM:
|
|
+ *baseName = "virtio-mem";
|
|
+ break;
|
|
+ case VIR_DOMAIN_MEMORY_MODEL_DIMM:
|
|
+ case VIR_DOMAIN_MEMORY_MODEL_NVDIMM:
|
|
+ case VIR_DOMAIN_MEMORY_MODEL_SGX_EPC:
|
|
+ case VIR_DOMAIN_MEMORY_MODEL_NONE:
|
|
+ case VIR_DOMAIN_MEMORY_MODEL_LAST:
|
|
+ break;
|
|
+ }
|
|
+ break;
|
|
+
|
|
case VIR_DOMAIN_DEVICE_LEASE:
|
|
case VIR_DOMAIN_DEVICE_WATCHDOG:
|
|
case VIR_DOMAIN_DEVICE_GRAPHICS:
|
|
@@ -979,7 +996,6 @@ qemuBuildVirtioDevGetConfigDev(const virDomainDeviceDef *device,
|
|
case VIR_DOMAIN_DEVICE_SHMEM:
|
|
case VIR_DOMAIN_DEVICE_TPM:
|
|
case VIR_DOMAIN_DEVICE_PANIC:
|
|
- case VIR_DOMAIN_DEVICE_MEMORY:
|
|
case VIR_DOMAIN_DEVICE_IOMMU:
|
|
case VIR_DOMAIN_DEVICE_AUDIO:
|
|
case VIR_DOMAIN_DEVICE_PSTORE:
|
|
@@ -3487,12 +3503,16 @@ qemuBuildMemoryDeviceProps(virQEMUDriverConfig *cfg,
|
|
break;
|
|
|
|
case VIR_DOMAIN_MEMORY_MODEL_VIRTIO_PMEM:
|
|
- device = "virtio-pmem-pci";
|
|
+ /* Deliberately not setting @device. */
|
|
+ if (!(props = qemuBuildVirtioDevProps(VIR_DOMAIN_DEVICE_MEMORY, mem, priv->qemuCaps)))
|
|
+ return NULL;
|
|
address = mem->target.virtio_pmem.address;
|
|
break;
|
|
|
|
case VIR_DOMAIN_MEMORY_MODEL_VIRTIO_MEM:
|
|
- device = "virtio-mem-pci";
|
|
+ /* Deliberately not setting @device. */
|
|
+ if (!(props = qemuBuildVirtioDevProps(VIR_DOMAIN_DEVICE_MEMORY, mem, priv->qemuCaps)))
|
|
+ return NULL;
|
|
|
|
if (virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_DEVICE_VIRTIO_MEM_PCI_PREALLOC) &&
|
|
qemuBuildMemoryGetPagesize(cfg, def, mem, NULL, NULL, NULL, &prealloc) < 0)
|
|
@@ -3514,7 +3534,7 @@ qemuBuildMemoryDeviceProps(virQEMUDriverConfig *cfg,
|
|
}
|
|
|
|
if (virJSONValueObjectAdd(&props,
|
|
- "s:driver", device,
|
|
+ "S:driver", device,
|
|
"k:node", mem->targetNode,
|
|
"P:label-size", labelsize * 1024,
|
|
"P:block-size", blocksize * 1024,
|
|
--
|
|
2.49.0
|