[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH for-4.2 v3 0/2] s390: stop abusing memory_region
From: |
Christian Borntraeger |
Subject: |
Re: [Qemu-devel] [PATCH for-4.2 v3 0/2] s390: stop abusing memory_region_allocate_system_memory() |
Date: |
Fri, 2 Aug 2019 16:42:59 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.8.0 |
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: address@hidden
> CC: address@hidden
> CC: address@hidden
> CC: address@hidden
> CC: address@hidden
> CC: address@hidden
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(-)
>