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(a)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