From af621caa6bd479ca7666bcc6254e0043466b7b00 Mon Sep 17 00:00:00 2001 From: Peter Krempa Date: Tue, 16 May 2023 10:22:39 +0200 Subject: [PATCH] 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 Reviewed-by: Michal Privoznik --- src/conf/numa_conf.c | 13 ++--- .../numatune-hmat-none.x86_64-latest.args | 49 +++++++++++++++++ tests/qemuxml2argvdata/numatune-hmat-none.xml | 54 ++++++++++++++++++ tests/qemuxml2argvtest.c | 1 + .../numatune-hmat-none.x86_64-latest.xml | 55 +++++++++++++++++++ tests/qemuxml2xmltest.c | 1 + 6 files changed, 164 insertions(+), 9 deletions(-) create mode 100644 tests/qemuxml2argvdata/numatune-hmat-none.x86_64-latest.args create mode 100644 tests/qemuxml2argvdata/numatune-hmat-none.xml create mode 100644 tests/qemuxml2xmloutdata/numatune-hmat-none.x86_64-latest.xml 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, "\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 @@ + + QEMUGuest + c7a5fdb2-cdaf-9455-926a-d65c16db1809 + 8388608 + 8388608 + 12 + + hvm + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + destroy + restart + restart + + /usr/bin/qemu-system-x86_64 + +
+ + + + +