diff options
author | Peter Krempa <pkrempa@redhat.com> | 2023-05-16 10:22:39 +0200 |
---|---|---|
committer | Peter Krempa <pkrempa@redhat.com> | 2023-05-17 10:07:18 +0200 |
commit | af621caa6bd479ca7666bcc6254e0043466b7b00 (patch) | |
tree | 809868c0883eb5c450506e24119f5f272c106876 | |
parent | 0d5fc7219ae605959e14d877865793f48c729f5e (diff) | |
download | libvirt-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.c | 13 | ||||
-rw-r--r-- | tests/qemuxml2argvdata/numatune-hmat-none.x86_64-latest.args | 49 | ||||
-rw-r--r-- | tests/qemuxml2argvdata/numatune-hmat-none.xml | 54 | ||||
-rw-r--r-- | tests/qemuxml2argvtest.c | 1 | ||||
-rw-r--r-- | tests/qemuxml2xmloutdata/numatune-hmat-none.x86_64-latest.xml | 55 | ||||
-rw-r--r-- | tests/qemuxml2xmltest.c | 1 |
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"); |