When more than ~50 pc-dimm devices are hotplugged with vhost enabled, QEMU will assert in vhost vhost_commit() due to backend refusing to accept too many memory ranges.
Series introduces Reserved HVA MemoryRegion container where all hotplugged memory is remapped and passes the single container range to vhost instead of multiple memory ranges for each hotlugged pc-dimm device. It's alternative approach to increasing backend supported memory regions limit since what I've come up with backend side approach is quite a bit more code so far. With this approach it would be possible to extend it to initial memory later and provide a single range for all RAM to vhost, which should speed up its hot-path by replacing current GPA<->HVA lookup loop with offset calculation. Igor Mammedov (2): memory: introduce MemoryRegion container with reserved HVA range pc: fix QEMU crashing when more than ~50 memory hotplugged exec.c | 13 +++++++++++ hw/i386/pc.c | 4 ++-- hw/virtio/vhost.c | 15 ++++++++++--- include/exec/cpu-common.h | 1 + include/exec/memory.h | 42 ++++++++++++++++++++++++++++++++++-- memory.c | 55 +++++++++++++++++++++++++++++++++++++++++++++++ 6 files changed, 123 insertions(+), 7 deletions(-) -- 1.8.3.1