Re: [V2 PATCH 0/6] KVM: selftests: selftests for fd-based private memory

Vishal Annapurve
2023-02-10T19:59:49Z

On Tue, Jan 17, 2023 at 7:11 PM Vishal Annapurve <vannapurve@google.com> wrote:
>
> ...

> > Last question, do you have a list of testcases that you consider "required" for
> > UPM? My off-the-cuff list of selftests I want to have before merging UPM is pretty
> > short at this point:
> >
> > - Negative testing of the memslot changes, e.g. bad alignment, bad fd,
> > illegal memslot updates, etc.
> > - Negative testing of restrictedmem, e.g. various combinations of overlapping
> > bindings of a single restrictedmem instance.
> > - Access vs. conversion stress, e.g. accessing a region in the guest while it's
> > concurrently converted by the host, maybe with fancy guest code to try and
> > detect TLB or ordering bugs?
>
> List of testcases that I was tracking (covered by the current
> selftests) as required:
> 1) Ensure private memory contents are not accessible to host userspace
> using the HVA
> 2) Ensure shared memory contents are visible/accessible from both host
> userspace and the guest
> 3) Ensure 1 and 2 holds across explicit memory conversions
> 4) Exercise memory conversions with mixed shared/private memory pages
> in a huge page to catch issues like [2]
> 5) Ensure that explicit memory conversions don't affect nearby GPA ranges
>
> Test Cases that will be covered by TDX/SNP selftests (in addition to
> above scenarios):
> 6) Ensure 1 and 2 holds across implicit memory conversions
> 7) Ensure that implicit memory conversions don't affect nearby GPA ranges
>
> Additional testcases possible:
> 8) Running conversion tests for non-overlapping GPA ranges of
> same/different memslots from multiple vcpus
>
> [1] - https://github.com/sean-jc/linux/commit/7e536bf3c45c623425bc84e8a96634efc3a619ed
> [2] - https://lore.kernel.org/linux-mm/CAGtprH82H_fjtRbL0KUxOkgOk4pgbaEbAydDYfZ0qxz41JCnAQ@mail.gmail.com/

List of additional testcases that could help increase basic coverage
(including what sean mentioned earlier):
1) restrictedmem functionality testing
- read/write/mmap should not work
- fstat/fallocate should work as expected
2) restrictedmem registration/modification testing with:
- bad alignment, bad fd, modifying properties of existing memslot
- Installing multiple memslots with ranges within the same
restricted mem files
- deleting memslots with restricted memfd while guests are being executed
3) Runtime restricted mem testing:
- Access vs conversion testing from multiple vcpus
- conversion and access to non-overlapping ranges from multiple vcpus

Regards,
Vishal