Re: [PATCH v7 07/13] KVM: selftests: Add vm->memslots[] and enum kvm_mem_region_type

Andrew Jones
2022-09-20T07:51:26Z

On Tue, Sep 20, 2022 at 04:25:45AM +0000, Ricardo Koller wrote:
> The vm_create() helpers are hardcoded to place most page types (code,
> page-tables, stacks, etc) in the same memslot #0, and always backed with
> anonymous 4K. There are a couple of issues with that. First, tests willing to
> differ a bit, like placing page-tables in a different backing source type must
> replicate much of what's already done by the vm_create() functions. Second,
> the hardcoded assumption of memslot #0 holding most things is spreaded
> everywhere; this makes it very hard to change.
>
> Fix the above issues by having selftests specify how they want memory to be
> laid out. Start by changing ____vm_create() to not create memslot #0; a future
> commit will add test that specifies all memslots used by the VM. Then, add the
> vm->memslots[] array to specify the right memslot for different memory
> allocators, e.g.,: lib/elf should use the vm->[MEM_REGION_CODE] memslot. This
> will be used as a way to specify the page-tables memslots (to be backed by huge
> pages for example).
>
> There is no functional change intended. The current commit lays out memory
> exactly as before. The next commit will change the allocators to get the region
> they should be using, e.g.,: like the page table allocators using the pt
> memslot.
>
> Cc: Sean Christopherson <seanjc@google.com>
> Cc: Andrew Jones <andrew.jones@linux.dev>
> Signed-off-by: Ricardo Koller <ricarkol@google.com>
> ---
> .../selftests/kvm/include/kvm_util_base.h | 25 +++++++++++++++++--
> tools/testing/selftests/kvm/lib/kvm_util.c | 18 +++++++------
> 2 files changed, 33 insertions(+), 10 deletions(-)
>

Reviewed-by: Andrew Jones <andrew.jones@linux.dev>