[PATCH 2/8] qemu_command: Use qemuBuildVirtioDevProps() to build cmd line for virtio-mem and virtio-pmem

Michal Privoznik posted 8 patches 7 months, 2 weeks ago
There is a newer version of this series
[PATCH 2/8] qemu_command: Use qemuBuildVirtioDevProps() to build cmd line for virtio-mem and virtio-pmem
Posted by Michal Privoznik 7 months, 2 weeks ago
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>
---
 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 1f28de6194..f10d0ffce5 100644
--- a/src/qemu/qemu_command.c
+++ b/src/qemu/qemu_command.c
@@ -959,6 +959,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:
@@ -971,7 +988,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:
@@ -3479,12 +3495,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)
@@ -3506,7 +3526,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.45.2
Re: [PATCH 2/8] qemu_command: Use qemuBuildVirtioDevProps() to build cmd line for virtio-mem and virtio-pmem
Posted by Boris Fiuczynski 7 months, 2 weeks ago
Reviewed-by: Boris Fiuczynski <fiuczy@linux.ibm.com>

On 1/24/25 13:21, Michal Privoznik wrote:
> 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>
> ---
>   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 1f28de6194..f10d0ffce5 100644
> --- a/src/qemu/qemu_command.c
> +++ b/src/qemu/qemu_command.c
> @@ -959,6 +959,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:
> @@ -971,7 +988,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:
> @@ -3479,12 +3495,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)
> @@ -3506,7 +3526,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,


-- 
Mit freundlichen Grüßen/Kind regards
    Boris Fiuczynski

IBM Deutschland Research & Development GmbH
Vorsitzender des Aufsichtsrats: Wolfgang Wendt
Geschäftsführung: David Faller
Sitz der Gesellschaft: Böblingen
Registergericht: Amtsgericht Stuttgart, HRB 243294