This series includes all the pending work on QOMifying the memory backends. Some of the patches posted so far didn't correctly build all targets, so I'm posting it as the basis for further work (including memory hotplug!). It's available at branch numa on my github repository.
To recap, the idea is to delegate all properties of the memory backend to a new QOM class hierarchy, in which the concrete classes are hostmem-ram and hostmem-file. The backend is passed to the machine via "-numa node,memdev=foo" where "foo" is the id of the backend object. Patches 1-6: generic numa improvements Patches 7-8: convert -m to QemuOpts, from the memory hotplug series Patches 9-11: improvements to object-add and -object Patches 12-15: infrastructure for QOM memory backends Patches 16-20: preparation for replacing -mem-path with a QOM backend Patches 21-24: new-style replacement for -mem-path, -mem-prealloc and madvise Patch 25: support for MAP_SHARED (requested by vhost-user) Patches 26-28: rest of Wanlong Gao and Hu Tao's NUMA policy work New patches are patch 9, patch 11, patches 16-25. Please review them. Missing, needed before merge: 1. conversion to memory_region_allocate_system_memory of all boards 2. more documentation Missing, nice to have: 1. improvements to string visitors for ranges 2. HMP "info memdev" command If anyone wants to pick up management of this series from now on, just shout. Paolo Hu Tao (2): hostmem: add properties for NUMA memory policy qmp: add query-memdev Igor Mammedov (3): vl: convert -m to QemuOpts qmp: allow object-add completion handler to get canonical path add memdev backend infrastructure Luiz Capitulino (1): man: improve -numa doc Paolo Bonzini (16): qemu-option: introduce qemu_find_opts_singleton vl: redo -object parsing qmp: improve error reporting for -object and object-add pc: pass QEMUMachineInitArgs to pc_memory_init numa: introduce memory_region_allocate_system_memory numa: add -numa node,memdev= option memory: reorganize file-based allocation memory: move mem_path handling to memory_region_allocate_system_memory memory: add error propagation to file-based RAM allocation memory: move preallocation code out of exec.c memory: move RAM_PREALLOC_MASK to exec.c, rename hostmem: add file-based HostMemoryBackend hostmem: separate allocation from UserCreatable complete method hostmem: add merge and dump properties hostmem: allow preallocation of any memory region hostmem: add property to map memory with MAP_SHARED Wanlong Gao (6): NUMA: move numa related code to new file numa.c NUMA: check if the total numa memory size is equal to ram_size NUMA: Add numa_info structure to contain numa nodes info NUMA: convert -numa option to use OptsVisitor NUMA: expand MAX_NODES from 64 to 128 configure: add Linux libnuma detection Makefile.target | 2 +- backends/Makefile.objs | 3 + backends/hostmem-file.c | 134 +++++++++++++++++ backends/hostmem-ram.c | 50 +++++++ backends/hostmem.c | 346 ++++++++++++++++++++++++++++++++++++++++++++ configure | 33 +++++ cpus.c | 14 -- exec.c | 206 +++++++++++++-------------- hw/i386/pc.c | 27 ++-- hw/i386/pc_piix.c | 8 +- hw/i386/pc_q35.c | 4 +- hw/ppc/spapr.c | 10 +- include/exec/cpu-all.h | 8 -- include/exec/cpu-common.h | 2 + include/exec/memory.h | 33 +++++ include/exec/ram_addr.h | 3 + include/hw/boards.h | 4 + include/hw/i386/pc.h | 7 +- include/qemu/config-file.h | 2 + include/qemu/osdep.h | 12 ++ include/sysemu/cpus.h | 1 - include/sysemu/hostmem.h | 68 +++++++++ include/sysemu/sysemu.h | 18 ++- memory.c | 29 ++++ monitor.c | 2 +- numa.c | 347 +++++++++++++++++++++++++++++++++++++++++++++ qapi-schema.json | 89 ++++++++++++ qemu-options.hx | 25 +++- qmp-commands.hx | 32 +++++ qmp.c | 15 +- util/oslib-posix.c | 73 ++++++++++ util/qemu-config.c | 14 ++ vl.c | 323 ++++++++++++++--------------------------- 33 files changed, 1549 insertions(+), 395 deletions(-) create mode 100644 backends/hostmem-file.c create mode 100644 backends/hostmem-ram.c create mode 100644 backends/hostmem.c create mode 100644 include/sysemu/hostmem.h create mode 100644 numa.c -- 1.8.5.3