Tested with libvirt v7.2.0-381-g3c3c55be66 and qemu-5.2.0-0.7.rc2.fc34.x86_64
S1. Without hugepage 1.Start domain with virtio-mem device, and check the value of <memory> is the total memory number including virtio-mem device. # virsh start pc_test 2. Hot plug a virtio-mem device, the values of memory & currentMemory are refreshed accordingly. # cat mem.xml <memory model='virtio-mem'> <source> <nodemask>0</nodemask> <pagesize unit='KiB'>2048</pagesize> </source> <target> <size unit='KiB'>131072</size> <node>0</node> <block unit='KiB'>2048</block> <requested unit='KiB'>131072</requested> <actual unit='KiB'>131072</actual> </target> </memory> #virsh attach-device pc_test mem.xml 3. Updated the requested size, and it's changed as expected from the output of "virsh dumpxml " # virsh update-memory-device pc_test --alias virtiomem1 --requested-size 100MiB S2. With below hugepage configuration, tested above 3 steps again, and all steps worked. <memoryBacking> <hugepages/> </memoryBacking> S3. Hot plug virtio-pmem and the value of <memory> is updated accordingly. <memory model='virtio-pmem' access='shared'> <source> <path>/tmp/nvdimm</path> </source> <target> <size unit='KiB'>131072</size> <label> <size unit='KiB'>128</size> </label> </target> </memory> # virsh attach-device pc_test pmem.xml Device attached successfully #virsh dumpxml pc_test ... -- Tested-by Jing Qi <ji...@redhat.com> On Fri, Apr 23, 2021 at 9:25 PM Michal Privoznik <mpriv...@redhat.com> wrote: > This is a rebased version of v3 I've sent about a month ago: > > https://listman.redhat.com/archives/libvir-list/2021-March/msg00823.html > > v2 here: > > https://listman.redhat.com/archives/libvir-list/2021-February/msg00961.html > > My intent is to merge these only after the upcoming release so that we > have the biggest test window possible. > > diff to v2: > - Dropped code that forbade use of virtio-mem and memballoon at the same > time; > - This meant that I had to adjust memory accounting, > qemuDomainSetMemoryFlags() - see patches 11/15 and 12/15 which are new. > - Fixed small nits raised by Peter in his review of v2 > > > Michal Prívozník (14): > virhostmem: Introduce virHostMemGetTHPSize() > qemu_process: Deduplicate code in qemuProcessNeedHugepagesPath() > qemu_process: Drop needless check in > qemuProcessNeedMemoryBackingPath() > qemu_capabilities: Introduce QEMU_CAPS_DEVICE_VIRTIO_MEM_PCI > conf: Introduce virtio-mem <memory/> model > qemu: Build command line for virtio-mem > qemu: Wire up <memory/> live update > qemu: Wire up MEMORY_DEVICE_SIZE_CHANGE event > qemu: Refresh the actual size of virtio-mem on monitor reconnect > qemu: Account for both memballoon and virtio-mem > qemuDomainSetMemoryFlags: Take virtio-mem into consideration > virsh: Introduce update-memory-device command > news: document recent virtio memory addition > kbase: Document virtio-mem > > NEWS.rst | 16 ++ > docs/formatdomain.rst | 45 +++- > docs/kbase/index.rst | 4 + > docs/kbase/memorydevices.rst | 150 +++++++++++ > docs/kbase/meson.build | 1 + > docs/manpages/virsh.rst | 30 +++ > docs/schemas/domaincommon.rng | 16 ++ > examples/c/misc/event-test.c | 17 ++ > include/libvirt/libvirt-domain.h | 23 ++ > src/conf/domain_conf.c | 115 ++++++++- > src/conf/domain_conf.h | 15 ++ > src/conf/domain_event.c | 84 +++++++ > src/conf/domain_event.h | 10 + > src/conf/domain_validate.c | 39 +++ > src/libvirt_private.syms | 5 + > src/qemu/qemu_alias.c | 10 +- > src/qemu/qemu_capabilities.c | 2 + > src/qemu/qemu_capabilities.h | 1 + > src/qemu/qemu_command.c | 13 +- > src/qemu/qemu_domain.c | 50 +++- > src/qemu/qemu_domain.h | 1 + > src/qemu/qemu_domain_address.c | 38 ++- > src/qemu/qemu_driver.c | 233 +++++++++++++++++- > src/qemu/qemu_hotplug.c | 18 ++ > src/qemu/qemu_hotplug.h | 5 + > src/qemu/qemu_monitor.c | 37 +++ > src/qemu/qemu_monitor.h | 28 +++ > src/qemu/qemu_monitor_json.c | 97 ++++++-- > src/qemu/qemu_monitor_json.h | 5 + > src/qemu/qemu_process.c | 118 ++++++++- > src/qemu/qemu_validate.c | 8 + > src/remote/remote_daemon_dispatch.c | 30 +++ > src/remote/remote_driver.c | 32 +++ > src/remote/remote_protocol.x | 14 +- > src/remote_protocol-structs | 7 + > src/security/security_apparmor.c | 1 + > src/security/security_dac.c | 2 + > src/security/security_selinux.c | 2 + > src/util/virhostmem.c | 63 +++++ > src/util/virhostmem.h | 3 + > tests/domaincapsmock.c | 9 + > .../caps_5.1.0.x86_64.xml | 1 + > .../caps_5.2.0.x86_64.xml | 1 + > .../caps_6.0.0.x86_64.xml | 1 + > ...mory-hotplug-virtio-mem.x86_64-latest.args | 41 +++ > .../memory-hotplug-virtio-mem.xml | 67 +++++ > tests/qemuxml2argvtest.c | 1 + > ...emory-hotplug-virtio-mem.x86_64-latest.xml | 1 + > tests/qemuxml2xmltest.c | 1 + > tools/virsh-domain.c | 169 +++++++++++++ > 50 files changed, 1613 insertions(+), 67 deletions(-) > create mode 100644 docs/kbase/memorydevices.rst > create mode 100644 > tests/qemuxml2argvdata/memory-hotplug-virtio-mem.x86_64-latest.args > create mode 100644 tests/qemuxml2argvdata/memory-hotplug-virtio-mem.xml > create mode 120000 > tests/qemuxml2xmloutdata/memory-hotplug-virtio-mem.x86_64-latest.xml > > -- > 2.26.3 > > -- Thanks & Regards, Jing,Qi