summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Krempa <pkrempa@redhat.com>2023-05-16 10:22:39 +0200
committerPeter Krempa <pkrempa@redhat.com>2023-05-17 10:07:18 +0200
commitaf621caa6bd479ca7666bcc6254e0043466b7b00 (patch)
tree809868c0883eb5c450506e24119f5f272c106876
parent0d5fc7219ae605959e14d877865793f48c729f5e (diff)
downloadlibvirt-af621caa6bd479ca7666bcc6254e0043466b7b00.tar.gz
conf: numa: Allow formatting 'none' values for 'associativity' and 'policy' of cache
The parser makes the values mandatory and also the qemu code implements actions for those values. The formatter skips them though. Since format+parse is used to copy the XML at startup a definition with those values can't be started. Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=2203709 Signed-off-by: Peter Krempa <pkrempa@redhat.com> Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
-rw-r--r--src/conf/numa_conf.c13
-rw-r--r--tests/qemuxml2argvdata/numatune-hmat-none.x86_64-latest.args49
-rw-r--r--tests/qemuxml2argvdata/numatune-hmat-none.xml54
-rw-r--r--tests/qemuxml2argvtest.c1
-rw-r--r--tests/qemuxml2xmloutdata/numatune-hmat-none.x86_64-latest.xml55
-rw-r--r--tests/qemuxml2xmltest.c1
6 files changed, 164 insertions, 9 deletions
diff --git a/src/conf/numa_conf.c b/src/conf/numa_conf.c
index c2e3045280..be0c4572c5 100644
--- a/src/conf/numa_conf.c
+++ b/src/conf/numa_conf.c
@@ -1708,15 +1708,10 @@ virNumaCacheFormat(virBuffer *buf,
g_auto(virBuffer) childBuf = VIR_BUFFER_INIT_CHILD(buf);
virBufferAsprintf(&attrBuf, " level='%u'", cache->level);
- if (cache->associativity) {
- virBufferAsprintf(&attrBuf, " associativity='%s'",
- virNumaCacheAssociativityTypeToString(cache->associativity));
- }
-
- if (cache->policy) {
- virBufferAsprintf(&attrBuf, " policy='%s'",
- virNumaCachePolicyTypeToString(cache->policy));
- }
+ virBufferAsprintf(&attrBuf, " associativity='%s'",
+ virNumaCacheAssociativityTypeToString(cache->associativity));
+ virBufferAsprintf(&attrBuf, " policy='%s'",
+ virNumaCachePolicyTypeToString(cache->policy));
virBufferAsprintf(&childBuf,
"<size value='%llu' unit='KiB'/>\n",
diff --git a/tests/qemuxml2argvdata/numatune-hmat-none.x86_64-latest.args b/tests/qemuxml2argvdata/numatune-hmat-none.x86_64-latest.args
new file mode 100644
index 0000000000..d61fa1fc70
--- /dev/null
+++ b/tests/qemuxml2argvdata/numatune-hmat-none.x86_64-latest.args
@@ -0,0 +1,49 @@
+LC_ALL=C \
+PATH=/bin \
+HOME=/var/lib/libvirt/qemu/domain--1-QEMUGuest \
+USER=test \
+LOGNAME=test \
+XDG_DATA_HOME=/var/lib/libvirt/qemu/domain--1-QEMUGuest/.local/share \
+XDG_CACHE_HOME=/var/lib/libvirt/qemu/domain--1-QEMUGuest/.cache \
+XDG_CONFIG_HOME=/var/lib/libvirt/qemu/domain--1-QEMUGuest/.config \
+/usr/bin/qemu-system-x86_64 \
+-name guest=QEMUGuest,debug-threads=on \
+-S \
+-object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/var/lib/libvirt/qemu/domain--1-QEMUGuest/master-key.aes"}' \
+-machine pc,usb=off,dump-guest-core=off,hmat=on,acpi=on \
+-accel tcg \
+-cpu qemu64 \
+-m 12288 \
+-overcommit mem-lock=off \
+-smp 12,sockets=12,cores=1,threads=1 \
+-object '{"qom-type":"memory-backend-ram","id":"ram-node0","size":2147483648}' \
+-numa node,nodeid=0,cpus=0-3,initiator=0,memdev=ram-node0 \
+-object '{"qom-type":"memory-backend-ram","id":"ram-node1","size":2147483648}' \
+-numa node,nodeid=1,cpus=4-7,initiator=1,memdev=ram-node1 \
+-object '{"qom-type":"memory-backend-ram","id":"ram-node2","size":2147483648}' \
+-numa node,nodeid=2,cpus=8-11,initiator=2,memdev=ram-node2 \
+-object '{"qom-type":"memory-backend-ram","id":"ram-node3","size":2147483648}' \
+-numa node,nodeid=3,initiator=0,memdev=ram-node3 \
+-object '{"qom-type":"memory-backend-ram","id":"ram-node4","size":2147483648}' \
+-numa node,nodeid=4,initiator=0,memdev=ram-node4 \
+-object '{"qom-type":"memory-backend-ram","id":"ram-node5","size":2147483648}' \
+-numa node,nodeid=5,initiator=0,memdev=ram-node5 \
+-numa hmat-lb,initiator=0,target=0,hierarchy=memory,data-type=access-latency,latency=5 \
+-numa hmat-lb,initiator=0,target=0,hierarchy=first-level,data-type=access-latency,latency=10 \
+-numa hmat-lb,initiator=0,target=0,hierarchy=memory,data-type=access-bandwidth,bandwidth=204800K \
+-numa hmat-lb,initiator=0,target=0,hierarchy=first-level,data-type=access-bandwidth,bandwidth=208896K \
+-numa hmat-cache,node-id=0,size=10K,level=1,associativity=none,policy=none,line=8 \
+-uuid c7a5fdb2-cdaf-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"}' \
+-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/qemuxml2argvdata/numatune-hmat-none.xml b/tests/qemuxml2argvdata/numatune-hmat-none.xml
new file mode 100644
index 0000000000..a848397826
--- /dev/null
+++ b/tests/qemuxml2argvdata/numatune-hmat-none.xml
@@ -0,0 +1,54 @@
+<domain type='qemu'>
+ <name>QEMUGuest</name>
+ <uuid>c7a5fdb2-cdaf-9455-926a-d65c16db1809</uuid>
+ <memory unit='KiB'>8388608</memory>
+ <currentMemory unit='KiB'>8388608</currentMemory>
+ <vcpu placement='static'>12</vcpu>
+ <os>
+ <type arch='x86_64' machine='pc'>hvm</type>
+ <boot dev='hd'/>
+ </os>
+ <features>
+ <acpi/>
+ <apic/>
+ <pae/>
+ </features>
+ <cpu>
+ <numa>
+ <cell id='0' cpus='0-3' memory='2097152' unit='KiB'>
+ <cache level='1' associativity='none' policy='none'>
+ <size value='10' unit='KiB'/>
+ <line value='8' unit='B'/>
+ </cache>
+ </cell>
+ <cell id='1' cpus='4-7' memory='2097152' unit='KiB'/>
+ <cell id='2' cpus='8-11' memory='2097152' unit='KiB'/>
+ <cell id='3' memory='2097152' unit='KiB'/>
+ <cell id='4' memory='2097152' unit='KiB'/>
+ <cell id='5' memory='2097152' unit='KiB'/>
+ <interconnects>
+ <latency initiator='0' target='0' type='access' value='5'/>
+ <latency initiator='0' target='0' cache='1' type='access' value='10'/>
+ <bandwidth initiator='0' target='0' type='access' value='204800' unit='KiB'/>
+ <bandwidth initiator='0' target='0' cache='1' type='access' value='208896' unit='KiB'/>
+ </interconnects>
+ </numa>
+ </cpu>
+ <clock offset='utc'/>
+ <on_poweroff>destroy</on_poweroff>
+ <on_reboot>restart</on_reboot>
+ <on_crash>restart</on_crash>
+ <devices>
+ <emulator>/usr/bin/qemu-system-x86_64</emulator>
+ <controller type='usb' index='0'>
+ <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>
+ </devices>
+</domain>
diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c
index 1da4aaec90..93d5ae018f 100644
--- a/tests/qemuxml2argvtest.c
+++ b/tests/qemuxml2argvtest.c
@@ -1875,6 +1875,7 @@ mymain(void)
DO_TEST_NOCAPS("numatune-distances");
DO_TEST_NOCAPS("numatune-no-vcpu");
DO_TEST_CAPS_LATEST("numatune-hmat");
+ DO_TEST_CAPS_LATEST("numatune-hmat-none");
DO_TEST_NOCAPS("numatune-auto-nodeset-invalid");
DO_TEST_NOCAPS("numatune-auto-prefer");
diff --git a/tests/qemuxml2xmloutdata/numatune-hmat-none.x86_64-latest.xml b/tests/qemuxml2xmloutdata/numatune-hmat-none.x86_64-latest.xml
new file mode 100644
index 0000000000..185da4bb7b
--- /dev/null
+++ b/tests/qemuxml2xmloutdata/numatune-hmat-none.x86_64-latest.xml
@@ -0,0 +1,55 @@
+<domain type='qemu'>
+ <name>QEMUGuest</name>
+ <uuid>c7a5fdb2-cdaf-9455-926a-d65c16db1809</uuid>
+ <memory unit='KiB'>8388608</memory>
+ <currentMemory unit='KiB'>8388608</currentMemory>
+ <vcpu placement='static'>12</vcpu>
+ <os>
+ <type arch='x86_64' machine='pc'>hvm</type>
+ <boot dev='hd'/>
+ </os>
+ <features>
+ <acpi/>
+ <apic/>
+ <pae/>
+ </features>
+ <cpu mode='custom' match='exact' check='none'>
+ <model fallback='forbid'>qemu64</model>
+ <numa>
+ <cell id='0' cpus='0-3' memory='2097152' unit='KiB'>
+ <cache level='1' associativity='none' policy='none'>
+ <size value='10' unit='KiB'/>
+ <line value='8' unit='B'/>
+ </cache>
+ </cell>
+ <cell id='1' cpus='4-7' memory='2097152' unit='KiB'/>
+ <cell id='2' cpus='8-11' memory='2097152' unit='KiB'/>
+ <cell id='3' memory='2097152' unit='KiB'/>
+ <cell id='4' memory='2097152' unit='KiB'/>
+ <cell id='5' memory='2097152' unit='KiB'/>
+ <interconnects>
+ <latency initiator='0' target='0' type='access' value='5'/>
+ <latency initiator='0' target='0' cache='1' type='access' value='10'/>
+ <bandwidth initiator='0' target='0' type='access' value='204800' unit='KiB'/>
+ <bandwidth initiator='0' target='0' cache='1' type='access' value='208896' unit='KiB'/>
+ </interconnects>
+ </numa>
+ </cpu>
+ <clock offset='utc'/>
+ <on_poweroff>destroy</on_poweroff>
+ <on_reboot>restart</on_reboot>
+ <on_crash>restart</on_crash>
+ <devices>
+ <emulator>/usr/bin/qemu-system-x86_64</emulator>
+ <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>
+ </devices>
+</domain>
diff --git a/tests/qemuxml2xmltest.c b/tests/qemuxml2xmltest.c
index 0f9d642730..fb6fa3579f 100644
--- a/tests/qemuxml2xmltest.c
+++ b/tests/qemuxml2xmltest.c
@@ -855,6 +855,7 @@ mymain(void)
DO_TEST_NOCAPS("numatune-distances");
DO_TEST_NOCAPS("numatune-no-vcpu");
DO_TEST("numatune-hmat", QEMU_CAPS_NUMA_HMAT);
+ DO_TEST_CAPS_LATEST("numatune-hmat-none");
DO_TEST_CAPS_LATEST("numatune-memnode-restrictive-mode");
DO_TEST_CAPS_LATEST("firmware-manual-bios");