memory_region_allocate_system_memory() is supposed to be called only once, but due to lack of the check some boards abused it by calling it multiple times. So here goes fixes that replace it with memory_region_init_ram() in most of the cases. However s390 case a bit convolted as we have to keep cross version migration working and need -mem-path to work there as well. To make it happen I hacked MemoryRegion aliases to work with migration by allocating 'fake' RAMBlock that aliases original RAM pointer (asking for comments on approach since I have no idea how migration works really). It is one way to fix s390 while not abusing memory_region_allocate_system_memory() and making it work with -mem-path correctly. (another a bit more dirty way would be adding machine callback to handle -mem-path and overiding it in s390, but migratable aliases approach looks more cleaner to me API wise and have potential to be reused if we would need to fix up RAM layout but keep migration stream compatible).
CC: Paolo Bonzini <pbonz...@redhat.com> CC: Richard Henderson <r...@twiddle.net> CC: Helge Deller <del...@gmx.de> CC: "Hervé Poussineau" <hpous...@reactos.org> CC: David Gibson <da...@gibson.dropbear.id.au> CC: Cornelia Huck <coh...@redhat.com> CC: Halil Pasic <pa...@linux.ibm.com> CC: Christian Borntraeger <borntrae...@de.ibm.com> CC: David Hildenbrand <da...@redhat.com> CC: Artyom Tarasenko <atar4q...@gmail.com> CC: Mark Cave-Ayland <mark.cave-ayl...@ilande.co.uk> CC: qemu-...@nongnu.org CC: qemu-s3...@nongnu.org Igor Mammedov (5): sparc64: use memory_region_allocate_system_memory() only for '-m' specified RAM ppc: rs6000_mc: drop usage of memory_region_allocate_system_memory() hppa: drop usage of memory_region_allocate_system_memory() for ROM memory: make MemoryRegion alias migratable s390: do not call memory_region_allocate_system_memory() multiple times exec.c | 7 ++++--- hw/hppa/machine.c | 5 ++--- hw/ppc/rs6000_mc.c | 15 ++++++++++----- hw/s390x/s390-virtio-ccw.c | 20 +++++++++++++++----- hw/sparc64/niagara.c | 25 +++++++++++++------------ memory.c | 5 +++++ 6 files changed, 49 insertions(+), 28 deletions(-) -- 2.7.4