On 02.08.19 15:32, Igor Mammedov wrote: > Changelog: > since v2: > - break migration from old QEMU (since 2.12-4.1) for guest with >8TB RAM > and drop migratable aliases patch as was agreed during v2 review > - drop 4.2 machines patch as it's not prerequisite anymore > since v1: > - include 4.2 machines patch for adding compat RAM layout on top > - 2/4 add missing in v1 patch for splitting too big MemorySection on > several memslots > - 3/4 amend code path on alias destruction to ensure that RAMBlock is > cleaned properly > - 4/4 add compat machine code to keep old layout (migration-wise) for > 4.1 and older machines > > > While looking into unifying guest RAM allocation to use hostmem backends > for initial RAM (especially when -mempath is used) and retiring > memory_region_allocate_system_memory() API, leaving only single hostmem > backend, > I was inspecting how currently it is used by boards and it turns out several > boards abuse it by calling the function several times (despite documented > contract > forbiding it). > > s390 is one of such boards where KVM limitation on memslot size got propagated > to board design and memory_region_allocate_system_memory() was abused to > satisfy > KVM requirement for max RAM chunk where memory region alias would suffice. > > Unfortunately, memory_region_allocate_system_memory() usage created migration > dependency where guest RAM is transferred in migration stream as several > RAMBlocks > if it's more than KVM_SLOT_MAX_BYTES. During v2 review it was agreed to ignore > migration breakage (documenting it in release notes) and leaving only KVM fix. > > In order to replace these several RAM chunks with a single memdev and keep it > working with KVM memslot size limit, following was done: > * [1/2] split too big RAM chunk inside of KVM code on several memory slots > if necessary > * [2/2] drop manual ram splitting in s390 code > > > CC: pbonz...@redhat.com > CC: qemu-s3...@nongnu.org > CC: borntrae...@de.ibm.com > CC: th...@redhat.com > CC: da...@redhat.com > CC: coh...@redhat.com
With the fixup this patch set seems to work on s390. I can start 9TB guests and I can migrate smaller guests between 4.1+patch and 4.0 and 3.1. I currently can not test migration for the 9TB guest due to lack of a 2nd system. > > Igor Mammedov (2): > kvm: s390: split too big memory section on several memslots > s390: do not call memory_region_allocate_system_memory() multiple > times > > include/hw/s390x/s390-virtio-ccw.h | 10 ++++ > include/sysemu/kvm_int.h | 1 + > accel/kvm/kvm-all.c | 79 ++++++++++++++++++------------ > hw/s390x/s390-virtio-ccw.c | 30 ++---------- > target/s390x/kvm.c | 1 + > 5 files changed, 63 insertions(+), 58 deletions(-) >