On 11/30/21 11:41, David Hildenbrand wrote: > Based-on: <20211130092838.24224-1-da...@redhat.com> > > Patch #1 - #7 are fully reviewed [1] but did not get picked up yet, so I'm > sending them along here, as they are required to use os_mem_prealloc() in > a safe way once the VM is running. > > Support preallocation of memory to make virtio-mem safe to use with > scarce memory resources such as hugetlb. Before acknowledging a plug > request from the guest, we'll try preallcoating memory. If that fails, > we'll fail the request gracefully and warn the usr once. > > To fully support huge pages for shared memory, we'll have to adjust shared > memory users, such as virtiofsd, to map guest memory via MAP_NORESERVE as > well, because otherwise, they'll end up overwriting the "reserve=off" > decision made by QEMU and try reserving huge pages for the sparse memory > region. > > In the future, we might want to process guest requests, including > preallocating memory, asynchronously via a dedicated iothread. > > [1] https://lkml.kernel.org/r/20211004120208.7409-1-da...@redhat.com > > Cc: Paolo Bonzini <pbonz...@redhat.com> > Cc: "Michael S. Tsirkin" <m...@redhat.com> > Cc: Igor Mammedov <imamm...@redhat.com> > Cc: Eduardo Habkost <ehabk...@redhat.com> > Cc: Dr. David Alan Gilbert <dgilb...@redhat.com> > Cc: Daniel P. Berrangé <berra...@redhat.com> > Cc: Gavin Shan <gs...@redhat.com> > Cc: Hui Zhu <teawa...@gmail.com> > Cc: Sebastien Boeuf <sebastien.bo...@intel.com> > Cc: Pankaj Gupta <pankaj.gupta.li...@gmail.com> > Cc: Michal Prívozník <mpriv...@redhat.com> > > David Hildenbrand (8): > util/oslib-posix: Let touch_all_pages() return an error > util/oslib-posix: Support MADV_POPULATE_WRITE for os_mem_prealloc() > util/oslib-posix: Introduce and use MemsetContext for > touch_all_pages() > util/oslib-posix: Don't create too many threads with small memory or > little pages > util/oslib-posix: Avoid creating a single thread with > MADV_POPULATE_WRITE > util/oslib-posix: Support concurrent os_mem_prealloc() invocation > util/oslib-posix: Forward SIGBUS to MCE handler under Linux > virtio-mem: Support "prealloc=on" option > > hw/virtio/virtio-mem.c | 39 +++++- > include/hw/virtio/virtio-mem.h | 4 + > include/qemu/osdep.h | 7 + > softmmu/cpus.c | 4 + > util/oslib-posix.c | 231 +++++++++++++++++++++++++-------- > 5 files changed, 226 insertions(+), 59 deletions(-) >
Reviewed-by: Michal Privoznik <mpriv...@redhat.com> Michal