v4: - remove unneeded async check from host_memory_backend_set_prealloc() - rename qemu_finish_async_mem_prealloc -> qemu_finish_async_prealloc_mem - use new phase PHASE_LATE_BACKENDS_CREATED for async
v3: - squash into a single patch - use global context list for async handling only (MT capability) - add BQL asserts to guard against concurrent async prealloc requests - clean up qemu_finish_async_mem_prealloc() error handling Includes David's suggested restructuring [1] (with David's SoB). [1] https://lore.kernel.org/qemu-devel/c15161eb-f52c-4a82-8b4b-0ba038421...@redhat.com/ v2: - require MADV_POPULATE_WRITE (simplify the implementation) - require prealloc context threads to ensure optimal thread placement - use machine phase 'initialized' to determine when to allow parallel init QEMU initializes preallocated backend memory when parsing the corresponding objects from the command line. In certain scenarios, such as memory being preallocated across multiple numa nodes, this approach is not optimal due to the unnecessary serialization. This series addresses this issue by initializing the backend memory objects in parallel. Mark Kanda (1): oslib-posix: initialize backend memory objects in parallel backends/hostmem.c | 7 ++- hw/virtio/virtio-mem.c | 4 +- include/hw/qdev-core.h | 5 ++ include/qemu/osdep.h | 18 +++++- system/vl.c | 9 +++ util/oslib-posix.c | 131 +++++++++++++++++++++++++++++++---------- util/oslib-win32.c | 8 ++- 7 files changed, 145 insertions(+), 37 deletions(-) -- 2.39.3