Re: [PATCH] qemu_domain_address: fix CCW virtio-mem hotplug

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

 



On 3/18/25 13:00, Martin Kletzander via Devel wrote:
On Tue, Mar 18, 2025 at 09:53:22AM +0100, Boris Fiuczynski wrote:
Since commit f23f8ff91a virtio-mem supports also CCW. When hotplugging a
virtio-mem device with a CCW address results in a PCI device getting
attached. The method qemuDomainAssignMemoryDeviceSlot is only
considering PCI as address type and overwriting the CCW address. Adding
support for address type CCW.

Signed-off-by: Boris Fiuczynski <fiuczy@xxxxxxxxxxxxx>
---
src/qemu/qemu_domain_address.c | 16 +++++++++++++++-
1 file changed, 15 insertions(+), 1 deletion(-)

diff --git a/src/qemu/qemu_domain_address.c b/src/qemu/ qemu_domain_address.c
index d38983bf63..b0289c2337 100644
--- a/src/qemu/qemu_domain_address.c
+++ b/src/qemu/qemu_domain_address.c
@@ -3067,6 +3067,7 @@ qemuDomainAssignMemoryDeviceSlot(virDomainObj *vm,
                                 virDomainMemoryDef *mem)
{
    g_autoptr(virBitmap) slotmap = NULL;
+    virDomainCCWAddressSet *ccwaddrs = NULL;
    virDomainDeviceDef dev = {.type = VIR_DOMAIN_DEVICE_MEMORY, .data.memory = mem};

    switch (mem->model) {
@@ -3080,7 +3081,20 @@ qemuDomainAssignMemoryDeviceSlot(virDomainObj *vm,

    case VIR_DOMAIN_MEMORY_MODEL_VIRTIO_PMEM:
    case VIR_DOMAIN_MEMORY_MODEL_VIRTIO_MEM:
-        return qemuDomainEnsurePCIAddress(vm, &dev);
+        if (mem->info.type == VIR_DOMAIN_DEVICE_ADDRESS_TYPE_NONE) {
+            if (qemuDomainIsS390CCW(vm->def))
+                mem->info.type = VIR_DOMAIN_DEVICE_ADDRESS_TYPE_CCW;
+        }
+
+        if (mem->info.type == VIR_DOMAIN_DEVICE_ADDRESS_TYPE_NONE ||
+            mem->info.type == VIR_DOMAIN_DEVICE_ADDRESS_TYPE_PCI) {
+            return qemuDomainEnsurePCIAddress(vm, &dev);
+        } else if (mem->info.type == VIR_DOMAIN_DEVICE_ADDRESS_TYPE_CCW) { +            if (!(ccwaddrs = virDomainCCWAddressSetCreateFromDomain(vm->def)))
+                return -1;
+            return virDomainCCWAddressAssign(&mem->info, ccwaddrs,
+                                             !mem- >info.addr.ccw.assigned);
+        }

You leak ccwaddrs here, I'd suggest squashing something like this in:

Thanks for your feedback.
I am going to send a v2 shortly.
It will make reuse of qemuDomainEnsureVirtioAddress reducing changes to a minimum.

--
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




[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