Re: [RFC PATCH v5 00/29] TDX KVM selftests

From: Sagi Shahar
Date: Wed Jun 05 2024 - 16:12:01 EST


On Wed, Jun 5, 2024 at 1:38 PM Verma, Vishal L <vishal.l.verma@xxxxxxxxx> wrote:
>
> On Tue, 2023-12-12 at 12:46 -0800, Sagi Shahar wrote:
> > Hello,
> >
> > This is v4 of the patch series for TDX selftests.
> >
> > It has been updated for Intel’s v17 of the TDX host patches which was
> > proposed here:
> > https://lore.kernel.org/all/cover.1699368322.git.isaku.yamahata@xxxxxxxxx/
> >
> > The tree can be found at:
> > https://github.com/googleprodkernel/linux-cc/tree/tdx-selftests-rfc-v5
>
> Hello,
>
> I wanted to check if there were any plans from Google to refresh this
> series for the current TDX patches and the kvm-coco-queue baseline?
>
I'm going to work on it soon and was planning on using Isaku's V19 of
the TDX host patches

> I'm setting up a CI system that the team is using to test updates to
> the different TDX patch series, and it currently runs the KVM Unit
> tests, and kvm selftests, and we'd like to be able to add these three
> new TDX tests to that as well.
>
> I tried to take a quick shot at rebasing it, but ran into several
> conflicts since kvm-coco-queue has in the meantime made changes e.g. in
> tools/testing/selftests/kvm/lib/x86_64/processor.c vcpu_setup().
>
> If you can help rebase this, Rick's MMU prep series might be a good
> baseline to use:
> https://lore.kernel.org/all/20240530210714.364118-1-rick.p.edgecombe@xxxxxxxxx/

This patch series only includes the basic TDX MMU changes and is
missing a lot of the TDX support. Not sure how this can be used as a
baseline without the rest of the TDX patches. Are there other patch
series that were posted based on this series which provides the rest
of the TDX support?
>
> This is also available in a tree at:
> https://github.com/intel/tdx/tree/tdx_kvm_dev-2024-05-30
>
> Thank you,
> Vishal
>
> >
> > Changes from RFC v4:
> >
> > Added patch to propagate KVM_EXIT_MEMORY_FAULT to userspace.
> >
> > Minor tweaks to align the tests to the new TDX 1.5 spec such as changes
> > in the expected values in TDG.VP.INFO.
> >
> > In RFCv5, TDX selftest code is organized into:
> >
> > + headers in tools/testing/selftests/kvm/include/x86_64/tdx/
> > + common code in tools/testing/selftests/kvm/lib/x86_64/tdx/
> > + selftests in tools/testing/selftests/kvm/x86_64/tdx_*
> >
> > Dependencies
> >
> > + Peter’s patches, which provide functions for the host to allocate
> > and track protected memory in the guest.
> > https://lore.kernel.org/all/20230110175057.715453-1-pgonda@xxxxxxxxxx/
> >
> > Further work for this patch series/TODOs
> >
> > + Sean’s comments for the non-confidential UPM selftests patch series
> > at https://lore.kernel.org/lkml/Y8dC8WDwEmYixJqt@xxxxxxxxxx/T/#u apply
> > here as well
> > + Add ucall support for TDX selftests
> >
> > I would also like to acknowledge the following people, who helped
> > review or test patches in previous versions:
> >
> > + Sean Christopherson <seanjc@xxxxxxxxxx>
> > + Zhenzhong Duan <zhenzhong.duan@xxxxxxxxx>
> > + Peter Gonda <pgonda@xxxxxxxxxx>
> > + Andrew Jones <drjones@xxxxxxxxxx>
> > + Maxim Levitsky <mlevitsk@xxxxxxxxxx>
> > + Xiaoyao Li <xiaoyao.li@xxxxxxxxx>
> > + David Matlack <dmatlack@xxxxxxxxxx>
> > + Marc Orr <marcorr@xxxxxxxxxx>
> > + Isaku Yamahata <isaku.yamahata@xxxxxxxxx>
> > + Maciej S. Szmigiero <maciej.szmigiero@xxxxxxxxxx>
> >
> > Links to earlier patch series
> >
> > + RFC v1: https://lore.kernel.org/lkml/20210726183816.1343022-1-erdemaktas@xxxxxxxxxx/T/#u
> > + RFC v2: https://lore.kernel.org/lkml/20220830222000.709028-1-sagis@xxxxxxxxxx/T/#u
> > + RFC v3: https://lore.kernel.org/lkml/20230121001542.2472357-1-ackerleytng@xxxxxxxxxx/T/#u
> > + RFC v4: https://lore.kernel.org/lkml/20230725220132.2310657-1-afranji@xxxxxxxxxx/
> >
> > *** BLURB HERE ***
> >
> > Ackerley Tng (12):
> > KVM: selftests: Add function to allow one-to-one GVA to GPA mappings
> > KVM: selftests: Expose function that sets up sregs based on VM's mode
> > KVM: selftests: Store initial stack address in struct kvm_vcpu
> > KVM: selftests: Refactor steps in vCPU descriptor table initialization
> > KVM: selftests: TDX: Use KVM_TDX_CAPABILITIES to validate TDs'
> > attribute configuration
> > KVM: selftests: TDX: Update load_td_memory_region for VM memory backed
> > by guest memfd
> > KVM: selftests: Add functions to allow mapping as shared
> > KVM: selftests: Expose _vm_vaddr_alloc
> > KVM: selftests: TDX: Add support for TDG.MEM.PAGE.ACCEPT
> > KVM: selftests: TDX: Add support for TDG.VP.VEINFO.GET
> > KVM: selftests: TDX: Add TDX UPM selftest
> > KVM: selftests: TDX: Add TDX UPM selftests for implicit conversion
> >
> > Erdem Aktas (3):
> > KVM: selftests: Add helper functions to create TDX VMs
> > KVM: selftests: TDX: Add TDX lifecycle test
> > KVM: selftests: TDX: Adding test case for TDX port IO
> >
> > Roger Wang (1):
> > KVM: selftests: TDX: Add TDG.VP.INFO test
> >
> > Ryan Afranji (2):
> > KVM: selftests: TDX: Verify the behavior when host consumes a TD
> > private memory
> > KVM: selftests: TDX: Add shared memory test
> >
> > Sagi Shahar (11):
> > KVM: selftests: TDX: Add report_fatal_error test
> > KVM: selftests: TDX: Add basic TDX CPUID test
> > KVM: selftests: TDX: Add basic get_td_vmcall_info test
> > KVM: selftests: TDX: Add TDX IO writes test
> > KVM: selftests: TDX: Add TDX IO reads test
> > KVM: selftests: TDX: Add TDX MSR read/write tests
> > KVM: selftests: TDX: Add TDX HLT exit test
> > KVM: selftests: TDX: Add TDX MMIO reads test
> > KVM: selftests: TDX: Add TDX MMIO writes test
> > KVM: selftests: TDX: Add TDX CPUID TDVMCALL test
> > KVM: selftests: Propagate KVM_EXIT_MEMORY_FAULT to userspace
> >
> > tools/testing/selftests/kvm/Makefile | 8 +
> > .../selftests/kvm/include/kvm_util_base.h | 30 +
> > .../selftests/kvm/include/x86_64/processor.h | 4 +
> > .../kvm/include/x86_64/tdx/td_boot.h | 82 +
> > .../kvm/include/x86_64/tdx/td_boot_asm.h | 16 +
> > .../selftests/kvm/include/x86_64/tdx/tdcall.h | 59 +
> > .../selftests/kvm/include/x86_64/tdx/tdx.h | 65 +
> > .../kvm/include/x86_64/tdx/tdx_util.h | 19 +
> > .../kvm/include/x86_64/tdx/test_util.h | 164 ++
> > tools/testing/selftests/kvm/lib/kvm_util.c | 101 +-
> > .../selftests/kvm/lib/x86_64/processor.c | 77 +-
> > .../selftests/kvm/lib/x86_64/tdx/td_boot.S | 101 ++
> > .../selftests/kvm/lib/x86_64/tdx/tdcall.S | 158 ++
> > .../selftests/kvm/lib/x86_64/tdx/tdx.c | 262 ++++
> > .../selftests/kvm/lib/x86_64/tdx/tdx_util.c | 558 +++++++
> > .../selftests/kvm/lib/x86_64/tdx/test_util.c | 101 ++
> > .../kvm/x86_64/tdx_shared_mem_test.c | 135 ++
> > .../selftests/kvm/x86_64/tdx_upm_test.c | 469 ++++++
> > .../selftests/kvm/x86_64/tdx_vm_tests.c | 1319 +++++++++++++++++
> > 19 files changed, 3693 insertions(+), 35 deletions(-)
> > create mode 100644 tools/testing/selftests/kvm/include/x86_64/tdx/td_boot.h
> > create mode 100644 tools/testing/selftests/kvm/include/x86_64/tdx/td_boot_asm.h
> > create mode 100644 tools/testing/selftests/kvm/include/x86_64/tdx/tdcall.h
> > create mode 100644 tools/testing/selftests/kvm/include/x86_64/tdx/tdx.h
> > create mode 100644 tools/testing/selftests/kvm/include/x86_64/tdx/tdx_util.h
> > create mode 100644 tools/testing/selftests/kvm/include/x86_64/tdx/test_util.h
> > create mode 100644 tools/testing/selftests/kvm/lib/x86_64/tdx/td_boot.S
> > create mode 100644 tools/testing/selftests/kvm/lib/x86_64/tdx/tdcall.S
> > create mode 100644 tools/testing/selftests/kvm/lib/x86_64/tdx/tdx.c
> > create mode 100644 tools/testing/selftests/kvm/lib/x86_64/tdx/tdx_util.c
> > create mode 100644 tools/testing/selftests/kvm/lib/x86_64/tdx/test_util.c
> > create mode 100644 tools/testing/selftests/kvm/x86_64/tdx_shared_mem_test.c
> > create mode 100644 tools/testing/selftests/kvm/x86_64/tdx_upm_test.c
> > create mode 100644 tools/testing/selftests/kvm/x86_64/tdx_vm_tests.c
> >
>