When there are more nodes than available memory to put the minimum allowed memory by node, all the memory is put on the last node.
This series introduces a new MachineState function to distribute equally the memory across the nodes without breaking compatibility with previous machine types. The new function uses an error diffusion algorithm to distribute the memory across the nodes. v4: - fix build: include numa.h in pc_piix.c and pc_q35.c v3: - by default, use the new algorithm (moved to machine.c), - use the legacy algorithm with pseries-2.9, pc-q35-2.9 and pc-i440fx-2.9 (and previous) v2: - introduce the MachineState function - if the machine state function pointer is NULL (default), use the legacy algorithm - use the new algorithm for pseries-2.10 only Laurent Vivier (1): numa: equally distribute memory on nodes hw/core/machine.c | 2 ++ hw/i386/pc_piix.c | 2 ++ hw/i386/pc_q35.c | 2 ++ hw/ppc/spapr.c | 1 + include/hw/boards.h | 2 ++ include/qemu/typedefs.h | 1 + include/sysemu/numa.h | 9 +++++++-- numa.c | 49 ++++++++++++++++++++++++++++++++++++++----------- 8 files changed, 55 insertions(+), 13 deletions(-) -- 2.9.3