On 4/13/21 11:14 AM, David Hildenbrand wrote: > Let's introduce RAM_NORESERVE, allowing mmap'ing with MAP_NORESERVE. The > new flag has the following semantics: > > " > RAM is mmap-ed with MAP_NORESERVE. When set, reserving swap space (or huge > pages if applicable) is skipped: will bail out if not supported. When not > set, the OS will do the reservation, if supported for the memory type. > " > > Allow passing it into: > - memory_region_init_ram_nomigrate() > - memory_region_init_resizeable_ram() > - memory_region_init_ram_from_file() > > ... and teach qemu_ram_mmap() and qemu_anon_ram_alloc() about the flag. > Bail out if the flag is not supported, which is the case right now for > both, POSIX and win32. We will add Linux support next and allow specifying > RAM_NORESERVE via memory backends. > > The target use case is virtio-mem, which dynamically exposes memory > inside a large, sparse memory area to the VM. > > Reviewed-by: Peter Xu <pet...@redhat.com> > Signed-off-by: David Hildenbrand <da...@redhat.com> > --- > include/exec/cpu-common.h | 1 + > include/exec/memory.h | 15 ++++++++++++--- > include/exec/ram_addr.h | 3 ++- > include/qemu/osdep.h | 9 ++++++++- > migration/ram.c | 3 +-- > softmmu/physmem.c | 15 +++++++++++---- > util/mmap-alloc.c | 7 +++++++ > util/oslib-posix.c | 6 ++++-- > util/oslib-win32.c | 13 ++++++++++++- > 9 files changed, 58 insertions(+), 14 deletions(-)
Reviewed-by: Philippe Mathieu-Daudé <phi...@redhat.com>