Skip to content
  • David Hildenbrand's avatar
    8dbe22c6
    memory: Introduce RAM_NORESERVE and wire it up in qemu_ram_mmap() · 8dbe22c6
    David Hildenbrand authored
    
    
    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: default avatarPhilippe Mathieu-Daudé <philmd@redhat.com>
    Reviewed-by: default avatarPeter Xu <peterx@redhat.com>
    Acked-by: Eduardo Habkost <ehabkost@redhat.com> for memory backend and machine core
    Signed-off-by: default avatarDavid Hildenbrand <david@redhat.com>
    Message-Id: <20210510114328.21835-9-david@redhat.com>
    Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
    8dbe22c6
    memory: Introduce RAM_NORESERVE and wire it up in qemu_ram_mmap()
    David Hildenbrand authored
    
    
    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: default avatarPhilippe Mathieu-Daudé <philmd@redhat.com>
    Reviewed-by: default avatarPeter Xu <peterx@redhat.com>
    Acked-by: Eduardo Habkost <ehabkost@redhat.com> for memory backend and machine core
    Signed-off-by: default avatarDavid Hildenbrand <david@redhat.com>
    Message-Id: <20210510114328.21835-9-david@redhat.com>
    Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
Loading