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 <jinqi@redhat.com>



On Fri, Apr 23, 2021 at 9:25 PM Michal Privoznik <mprivozn@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