Re: [PATCH v3 00/15] KVM: Dynamically size memslot arrays

From: Marc Zyngier
Date: Fri Oct 25 2019 - 12:30:46 EST


On 2019-10-25 00:07, 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.

I've finally found time to test this on a garden variety of arm64 boxes,
and nothing caught fire. It surely must be doing something right!

FWIW:

Tested-by: Marc Zyngier <maz@xxxxxxxxxx>

M.
--
Jazz is not dead. It just smells funny...