[libvirt] [PATCH 2/7] qemu: Save various defaults for shmem

Martin Kletzander mkletzan at redhat.com
Wed Aug 10 11:50:06 UTC 2016


When we change the device used for the shared memory, it should not
change the settings, so rather save them upfront then hving problems
later.

Signed-off-by: Martin Kletzander <mkletzan at redhat.com>
---
 src/qemu/qemu_domain.c                            | 18 ++++++++++++++++++
 tests/qemuxml2argvdata/qemuxml2argv-shmem.args    |  2 +-
 tests/qemuxml2xmloutdata/qemuxml2xmlout-shmem.xml |  1 +
 3 files changed, 20 insertions(+), 1 deletion(-)

diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
index efc46f991692..78d5acd380ec 100644
--- a/src/qemu/qemu_domain.c
+++ b/src/qemu/qemu_domain.c
@@ -2617,6 +2617,24 @@ qemuDomainDeviceDefPostParse(virDomainDeviceDefPtr dev,
         }
     }

+    if (dev->type == VIR_DOMAIN_DEVICE_SHMEM) {
+        if (!dev->data.shmem->server.enabled) {
+            if (!dev->data.shmem->size)
+                dev->data.shmem->size = 4 << 20;
+        } else {
+            /* Defaults/Requirements for the newer device that we should save */
+            if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_DEVICE_IVSHMEM_DOORBELL)) {
+                /* Size does not make much sense when claiming memory from
+                 * the server and so the newer version doesn't support that */
+                dev->data.shmem->size = 0;
+
+                dev->data.shmem->msi.enabled = true;
+                if (!dev->data.shmem->msi.ioeventfd)
+                    dev->data.shmem->msi.ioeventfd = VIR_TRISTATE_SWITCH_ON;
+            }
+        }
+    }
+
     ret = 0;

  cleanup:
diff --git a/tests/qemuxml2argvdata/qemuxml2argv-shmem.args b/tests/qemuxml2argvdata/qemuxml2argv-shmem.args
index 89caf499f8dd..debfb531fc92 100644
--- a/tests/qemuxml2argvdata/qemuxml2argv-shmem.args
+++ b/tests/qemuxml2argvdata/qemuxml2argv-shmem.args
@@ -17,7 +17,7 @@ QEMU_AUDIO_DRV=none \
 -no-acpi \
 -boot c \
 -usb \
--device ivshmem,shm=shmem0,id=shmem0,bus=pci.0,addr=0x3 \
+-device ivshmem,size=4m,shm=shmem0,id=shmem0,bus=pci.0,addr=0x3 \
 -device ivshmem,size=128m,shm=shmem1,id=shmem1,bus=pci.0,addr=0x5 \
 -device ivshmem,size=256m,shm=shmem2,id=shmem2,bus=pci.0,addr=0x4 \
 -device ivshmem,size=512m,chardev=charshmem3,id=shmem3,bus=pci.0,addr=0x6 \
diff --git a/tests/qemuxml2xmloutdata/qemuxml2xmlout-shmem.xml b/tests/qemuxml2xmloutdata/qemuxml2xmlout-shmem.xml
index 1197f361e3c4..5c4a91d850e8 100644
--- a/tests/qemuxml2xmloutdata/qemuxml2xmlout-shmem.xml
+++ b/tests/qemuxml2xmloutdata/qemuxml2xmlout-shmem.xml
@@ -22,6 +22,7 @@
     <input type='keyboard' bus='ps2'/>
     <memballoon model='none'/>
     <shmem name='shmem0'>
+      <size unit='M'>4</size>
       <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
     </shmem>
     <shmem name='shmem1'>
-- 
2.9.2




More information about the libvir-list mailing list