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

Chao Peng
2023-02-22T02:58:51Z

On Fri, Feb 10, 2023 at 11:59:23AM -0800, Vishal Annapurve wrote:
> 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

In case you havn't started, I will work on 1) and 2) for the following
days. As a start, I will first add restrictedmem tests (without KVM) then
move to new memslots related tests.

Chao

> 3) Runtime restricted mem testing:
> - Access vs conversion testing from multiple vcpus
> - conversion and access to non-overlapping ranges from multiple vcpus
>
> Regards,
> Vishal