Re: [PATCH v3 00/15] KVM: Dynamically size memslot arrays
From: Christian Borntraeger
Date: Mon Dec 16 2019 - 03:25:38 EST
On 13.12.19 21:01, Sean Christopherson wrote:
> On Tue, Dec 03, 2019 at 02:14:33PM -0800, Sean Christopherson wrote:
>> On Thu, Oct 24, 2019 at 04:07:29PM -0700, Sean Christopherson wrote:
>>> The end goal of this series is to dynamically size the memslot array so
>>> that KVM allocates memory based on the number of memslots in use, as
>>> opposed to unconditionally allocating memory for the maximum number of
>>> memslots. On x86, each memslot consumes 88 bytes, and so with 2 address
>>> spaces of 512 memslots, each VM consumes ~90k bytes for the memslots.
>>> E.g. given a VM that uses a total of 30 memslots, dynamic sizing reduces
>>> the memory footprint from 90k to ~2.6k bytes.
>>>
>>> The changes required to support dynamic sizing are relatively small,
>>> e.g. are essentially contained in patches 14/15 and 15/15. Patches 1-13
>>> clean up the memslot code, which has gotten quite crusty, especially
>>> __kvm_set_memory_region(). The clean up is likely not strictly necessary
>>> to switch to dynamic sizing, but I didn't have a remotely reasonable
>>> level of confidence in the correctness of the dynamic sizing without first
>>> doing the clean up.
>>>
>>> Christoffer, I added your Tested-by to the patches that I was confident
>>> would be fully tested based on the desription of what you tested. Let me
>>> know if you disagree with any of 'em.
>>>
>>> v3:
>>> - Fix build errors on PPC and MIPS due to missed params during
>>> refactoring [kbuild test robot].
>>> - Rename the helpers for update_memslots() and add comments describing
>>> the new algorithm and how it interacts with searching [Paolo].
>>> - Remove the unnecessary and obnoxious warning regarding memslots being
>>> a flexible array [Paolo].
>>> - Fix typos in the changelog of patch 09/15 [Christoffer].
>>> - Collect tags [Christoffer].
>>>
>>> v2:
>>> - Split "Drop kvm_arch_create_memslot()" into three patches to move
>>> minor functional changes to standalone patches [Janosch].
>>> - Rebase to latest kvm/queue (f0574a1cea5b, "KVM: x86: fix ...")
>>> - Collect an Acked-by and a Reviewed-by
>>
>> Paolo, do you want me to rebase this to the latest kvm/queue?
>
> Ping.
>
> Applies cleanly on the current kvm/queue and nothing caught fire in
> testing (though I only re-tested the series as a whole).
Do you have the latest version somewhere on a branch? The version on the
list no longer applies cleanly.