]> xenbits.xensource.com Git - libvirt.git/commitdiff
qemuxmlconftest: Introduce memory-hotplug-nvdimm-overlap test case
authorMichal Privoznik <mprivozn@redhat.com>
Tue, 20 Feb 2024 15:28:55 +0000 (16:28 +0100)
committerMichal Privoznik <mprivozn@redhat.com>
Thu, 22 Feb 2024 09:54:07 +0000 (10:54 +0100)
This new test case checks whether we are handling NVDIMMs
correctly when checking for overlapping memory devices (see
previous commit). Without previous commit, this test case would
fail, yet it was produced in real life (at least the NVDIMM
part) and thus it is valid.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Martin Kletzander <mkletzan@redhat.com>
tests/qemuxmlconfdata/memory-hotplug-nvdimm-overlap.x86_64-latest.args [new file with mode: 0644]
tests/qemuxmlconfdata/memory-hotplug-nvdimm-overlap.x86_64-latest.xml [new symlink]
tests/qemuxmlconfdata/memory-hotplug-nvdimm-overlap.xml [new file with mode: 0644]
tests/qemuxmlconftest.c

diff --git a/tests/qemuxmlconfdata/memory-hotplug-nvdimm-overlap.x86_64-latest.args b/tests/qemuxmlconfdata/memory-hotplug-nvdimm-overlap.x86_64-latest.args
new file mode 100644 (file)
index 0000000..e74d2d7
--- /dev/null
@@ -0,0 +1,40 @@
+LC_ALL=C \
+PATH=/bin \
+HOME=/var/lib/libvirt/qemu/domain--1-QEMUGuest1 \
+USER=test \
+LOGNAME=test \
+XDG_DATA_HOME=/var/lib/libvirt/qemu/domain--1-QEMUGuest1/.local/share \
+XDG_CACHE_HOME=/var/lib/libvirt/qemu/domain--1-QEMUGuest1/.cache \
+XDG_CONFIG_HOME=/var/lib/libvirt/qemu/domain--1-QEMUGuest1/.config \
+/usr/bin/qemu-system-x86_64 \
+-name guest=QEMUGuest1,debug-threads=on \
+-S \
+-object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/var/lib/libvirt/qemu/domain--1-QEMUGuest1/master-key.aes"}' \
+-machine pc,usb=off,dump-guest-core=off,nvdimm=on,acpi=off \
+-accel tcg \
+-cpu qemu64 \
+-m size=1048576k,slots=16,maxmem=1099511627776k \
+-overcommit mem-lock=off \
+-smp 2,sockets=2,dies=1,clusters=1,cores=1,threads=1 \
+-object '{"qom-type":"memory-backend-ram","id":"ram-node0","size":1073741824}' \
+-numa node,nodeid=0,cpus=0-1,memdev=ram-node0 \
+-uuid c7a5fdbd-edaf-9455-926a-d65c16db1809 \
+-display none \
+-no-user-config \
+-nodefaults \
+-chardev socket,id=charmonitor,fd=1729,server=on,wait=off \
+-mon chardev=charmonitor,id=monitor,mode=control \
+-rtc base=utc \
+-no-shutdown \
+-boot strict=on \
+-device '{"driver":"piix3-usb-uhci","id":"usb","bus":"pci.0","addr":"0x1.0x2"}' \
+-object '{"qom-type":"memory-backend-file","id":"memnvdimm0","mem-path":"/tmp/nvdimm1","share":true,"prealloc":true,"size":536870912,"align":2097152}' \
+-device '{"driver":"nvdimm","node":0,"label-size":131072,"memdev":"memnvdimm0","id":"nvdimm0","slot":0,"addr":4294967296}' \
+-object '{"qom-type":"memory-backend-file","id":"memnvdimm1","mem-path":"/tmp/nvdimm2","share":true,"prealloc":true,"size":536870912,"align":2097152}' \
+-device '{"driver":"nvdimm","node":0,"label-size":131072,"memdev":"memnvdimm1","id":"nvdimm1","slot":1,"addr":4829741056}' \
+-blockdev '{"driver":"host_device","filename":"/dev/HostVG/QEMUGuest1","node-name":"libvirt-1-storage","read-only":false}' \
+-device '{"driver":"ide-hd","bus":"ide.0","unit":0,"drive":"libvirt-1-storage","id":"ide0-0-0","bootindex":1}' \
+-audiodev '{"id":"audio1","driver":"none"}' \
+-device '{"driver":"virtio-balloon-pci","id":"balloon0","bus":"pci.0","addr":"0x3"}' \
+-sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,resourcecontrol=deny \
+-msg timestamp=on
diff --git a/tests/qemuxmlconfdata/memory-hotplug-nvdimm-overlap.x86_64-latest.xml b/tests/qemuxmlconfdata/memory-hotplug-nvdimm-overlap.x86_64-latest.xml
new file mode 120000 (symlink)
index 0000000..c5c37c4
--- /dev/null
@@ -0,0 +1 @@
+memory-hotplug-nvdimm-overlap.xml
\ No newline at end of file
diff --git a/tests/qemuxmlconfdata/memory-hotplug-nvdimm-overlap.xml b/tests/qemuxmlconfdata/memory-hotplug-nvdimm-overlap.xml
new file mode 100644 (file)
index 0000000..707b00c
--- /dev/null
@@ -0,0 +1,77 @@
+<domain type='qemu'>
+  <name>QEMUGuest1</name>
+  <uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid>
+  <maxMemory slots='16' unit='KiB'>1099511627776</maxMemory>
+  <memory unit='KiB'>1267710</memory>
+  <currentMemory unit='KiB'>1267710</currentMemory>
+  <vcpu placement='static' cpuset='0-1'>2</vcpu>
+  <os>
+    <type arch='x86_64' machine='pc'>hvm</type>
+    <boot dev='hd'/>
+  </os>
+  <idmap>
+    <uid start='0' target='1000' count='10'/>
+    <gid start='0' target='1000' count='10'/>
+  </idmap>
+  <cpu mode='custom' match='exact' check='none'>
+    <model fallback='forbid'>qemu64</model>
+    <topology sockets='2' dies='1' clusters='1' cores='1' threads='1'/>
+    <numa>
+      <cell id='0' cpus='0-1' memory='1048576' unit='KiB'/>
+    </numa>
+  </cpu>
+  <clock offset='utc'/>
+  <on_poweroff>destroy</on_poweroff>
+  <on_reboot>restart</on_reboot>
+  <on_crash>destroy</on_crash>
+  <devices>
+    <emulator>/usr/bin/qemu-system-x86_64</emulator>
+    <disk type='block' device='disk'>
+      <driver name='qemu' type='raw'/>
+      <source dev='/dev/HostVG/QEMUGuest1'/>
+      <target dev='hda' bus='ide'/>
+      <address type='drive' controller='0' bus='0' target='0' unit='0'/>
+    </disk>
+    <controller type='ide' index='0'>
+      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>
+    </controller>
+    <controller type='usb' index='0' model='piix3-uhci'>
+      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
+    </controller>
+    <controller type='pci' index='0' model='pci-root'/>
+    <input type='mouse' bus='ps2'/>
+    <input type='keyboard' bus='ps2'/>
+    <audio id='1' type='none'/>
+    <memballoon model='virtio'>
+      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
+    </memballoon>
+    <memory model='nvdimm' access='shared'>
+      <source>
+        <path>/tmp/nvdimm1</path>
+        <alignsize unit='KiB'>2048</alignsize>
+      </source>
+      <target>
+        <size unit='KiB'>524288</size>
+        <node>0</node>
+        <label>
+          <size unit='KiB'>128</size>
+        </label>
+      </target>
+      <address type='dimm' slot='0' base='0x100000000'/>
+    </memory>
+    <memory model='nvdimm' access='shared'>
+      <source>
+        <path>/tmp/nvdimm2</path>
+        <alignsize unit='KiB'>2048</alignsize>
+      </source>
+      <target>
+        <size unit='KiB'>524288</size>
+        <node>0</node>
+        <label>
+          <size unit='KiB'>128</size>
+        </label>
+      </target>
+      <address type='dimm' slot='1' base='0x11fe00000'/>
+    </memory>
+  </devices>
+</domain>
index e1ee1fbce3decee3470fb6ee909113261a7d597f..03453e8ec8d2bdbf900cc2034f546d9ac6e13919 100644 (file)
@@ -2554,6 +2554,10 @@ mymain(void)
     DO_TEST_CAPS_LATEST("memory-hotplug-virtio-mem");
     DO_TEST_CAPS_LATEST("memory-hotplug-multiple");
     DO_TEST_CAPS_LATEST_PARSE_ERROR("memory-hotplug-virtio-mem-overlap-address");
+    /* Test whether overlap calculation done in
+     * virDomainMemoryDefCheckConflict() works for NVDIMMs which are special
+     * than other memory devices because of how they handle <labelsize/> */
+    DO_TEST_CAPS_LATEST("memory-hotplug-nvdimm-overlap");
 
     DO_TEST_CAPS_ARCH_LATEST("machine-aeskeywrap-on-caps", "s390x");
     DO_TEST_CAPS_ARCH_LATEST("machine-aeskeywrap-on-cap", "s390x");