public inbox for kvm@vger.kernel.org
 help / color / mirror / Atom feed
From: Ryan Afranji <afranji@google.com>
To: linux-kselftest@vger.kernel.org
Cc: pbonzini@redhat.com, seanjc@google.com, isaku.yamahata@intel.com,
	sagis@google.com, erdemaktas@google.com, afranji@google.com,
	runanwang@google.com, shuah@kernel.org, drjones@redhat.com,
	maz@kernel.org, bgardon@google.com, jmattson@google.com,
	dmatlack@google.com, peterx@redhat.com, oupton@google.com,
	ricarkol@google.com, yang.zhong@intel.com, wei.w.wang@intel.com,
	xiaoyao.li@intel.com, pgonda@google.com, eesposit@redhat.com,
	borntraeger@de.ibm.com, eric.auger@redhat.com,
	wangyanan55@huawei.com, aaronlewis@google.com,
	vkuznets@redhat.com, pshier@google.com, axelrasmussen@google.com,
	zhenzhong.duan@intel.com, maciej.szmigiero@oracle.com,
	like.xu@linux.intel.com, linux-kernel@vger.kernel.org,
	kvm@vger.kernel.org, ackerleytng@google.com
Subject: [PATCH v4 00/28] TDX KVM selftests
Date: Tue, 25 Jul 2023 22:00:53 +0000	[thread overview]
Message-ID: <20230725220132.2310657-1-afranji@google.com> (raw)

Hello,

This is v4 of the patch series for TDX selftests.

It has been updated for Intel’s v14 of the TDX host patches which was
proposed here:
https://lore.kernel.org/lkml/cover.1685333727.git.isaku.yamahata@intel.com/

The tree can be found at:
https://github.com/googleprodkernel/linux-cc/tree/tdx-selftests-rfc-v4

Changes from RFC v3:

In v14, TDX can only run with UPM enabled so the necessary changes were
made to handle that.

td_vcpu_run() was added to handle TdVmCalls that are now handled in
userspace.

The comments under the patch "KVM: selftests: Require GCC to realign
stacks on function entry" were addressed with the following patch:
https://lore.kernel.org/lkml/Y%2FfHLdvKHlK6D%2F1v@google.com/T/

And other minor tweaks were made to integrate the selftest
infrastructure onto v14.

In RFCv4, 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/lkml/20221018205845.770121-1-pgonda@google.com/T/

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@google.com/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 RFCv1, RFCv2, and RFCv3:

+ Sean Christopherson <seanjc@google.com>
+ Zhenzhong Duan <zhenzhong.duan@intel.com>
+ Peter Gonda <pgonda@google.com>
+ Andrew Jones <drjones@redhat.com>
+ Maxim Levitsky <mlevitsk@redhat.com>
+ Xiaoyao Li <xiaoyao.li@intel.com>
+ David Matlack <dmatlack@google.com>
+ Marc Orr <marcorr@google.com>
+ Isaku Yamahata <isaku.yamahata@gmail.com>
+ Maciej S. Szmigiero <maciej.szmigiero@oracle.com>

Links to earlier patch series

+ RFC v1: https://lore.kernel.org/lkml/20210726183816.1343022-1-erdemaktas@google.com/T/#u
+ RFC v2: https://lore.kernel.org/lkml/20220830222000.709028-1-sagis@google.com/T/#u
+ RFC v3: https://lore.kernel.org/lkml/20230121001542.2472357-1-ackerleytng@google.com/T/#u

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 (10):
  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

 tools/testing/selftests/kvm/Makefile          |    8 +
 .../selftests/kvm/include/kvm_util_base.h     |   35 +
 .../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    |  115 +-
 .../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   |  565 +++++++
 .../selftests/kvm/lib/x86_64/tdx/test_util.c  |  101 ++
 .../kvm/x86_64/tdx_shared_mem_test.c          |  134 ++
 .../selftests/kvm/x86_64/tdx_upm_test.c       |  469 ++++++
 .../selftests/kvm/x86_64/tdx_vm_tests.c       | 1322 +++++++++++++++++
 19 files changed, 3730 insertions(+), 26 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

-- 
2.41.0.487.g6d72f3e995-goog


             reply	other threads:[~2023-07-25 22:02 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-07-25 22:00 Ryan Afranji [this message]
2023-07-25 22:00 ` [PATCH v4 01/28] KVM: selftests: Add function to allow one-to-one GVA to GPA mappings Ryan Afranji
2023-07-25 22:00 ` [PATCH v4 02/28] KVM: selftests: Expose function that sets up sregs based on VM's mode Ryan Afranji
2023-07-25 22:00 ` [PATCH v4 03/28] KVM: selftests: Store initial stack address in struct kvm_vcpu Ryan Afranji
2023-07-25 22:00 ` [PATCH v4 04/28] KVM: selftests: Refactor steps in vCPU descriptor table initialization Ryan Afranji
2023-07-25 22:00 ` [PATCH v4 05/28] KVM: selftests: Add helper functions to create TDX VMs Ryan Afranji
2023-07-25 22:00 ` [PATCH v4 06/28] KVM: selftests: TDX: Use KVM_TDX_CAPABILITIES to validate TDs' attribute configuration Ryan Afranji
2023-07-25 22:01 ` [PATCH v4 07/28] KVM: selftests: TDX: Update load_td_memory_region for VM memory backed by guest memfd Ryan Afranji
2023-07-25 22:01 ` [PATCH v4 08/28] KVM: selftests: TDX: Add TDX lifecycle test Ryan Afranji
2023-07-25 22:01 ` [PATCH v4 09/28] KVM: selftests: TDX: Add report_fatal_error test Ryan Afranji
2023-07-25 22:01 ` [PATCH v4 10/28] KVM: selftests: TDX: Adding test case for TDX port IO Ryan Afranji
2023-07-25 22:01 ` [PATCH v4 11/28] KVM: selftests: TDX: Add basic TDX CPUID test Ryan Afranji
2023-07-25 22:01 ` [PATCH v4 12/28] KVM: selftests: TDX: Add basic get_td_vmcall_info test Ryan Afranji
2023-07-25 22:01 ` [PATCH v4 13/28] KVM: selftests: TDX: Add TDX IO writes test Ryan Afranji
2023-07-25 22:01 ` [PATCH v4 14/28] KVM: selftests: TDX: Add TDX IO reads test Ryan Afranji
2023-07-25 22:01 ` [PATCH v4 15/28] KVM: selftests: TDX: Add TDX MSR read/write tests Ryan Afranji
2023-07-25 22:01 ` [PATCH v4 16/28] KVM: selftests: TDX: Add TDX HLT exit test Ryan Afranji
2023-07-25 22:01 ` [PATCH v4 17/28] KVM: selftests: TDX: Add TDX MMIO reads test Ryan Afranji
2023-07-25 22:01 ` [PATCH v4 18/28] KVM: selftests: TDX: Add TDX MMIO writes test Ryan Afranji
2023-07-25 22:01 ` [PATCH v4 19/28] KVM: selftests: TDX: Add TDX CPUID TDVMCALL test Ryan Afranji
2023-07-25 22:01 ` [PATCH v4 20/28] KVM: selftests: TDX: Verify the behavior when host consumes a TD private memory Ryan Afranji
2023-07-25 22:01 ` [PATCH v4 21/28] KVM: selftests: TDX: Add TDG.VP.INFO test Ryan Afranji
2023-07-25 22:01 ` [PATCH v4 22/28] KVM: selftests: Add functions to allow mapping as shared Ryan Afranji
2023-07-25 22:01 ` [PATCH v4 23/28] KVM: selftests: TDX: Add shared memory test Ryan Afranji
2023-07-25 22:01 ` [PATCH v4 24/28] KVM: selftests: Expose _vm_vaddr_alloc Ryan Afranji
2023-07-25 22:01 ` [PATCH v4 25/28] KVM: selftests: TDX: Add support for TDG.MEM.PAGE.ACCEPT Ryan Afranji
2023-07-25 22:01 ` [PATCH v4 26/28] KVM: selftests: TDX: Add support for TDG.VP.VEINFO.GET Ryan Afranji
2023-07-25 22:01 ` [PATCH v4 27/28] KVM: selftests: TDX: Add TDX UPM selftest Ryan Afranji
2023-07-25 22:01 ` [PATCH v4 28/28] KVM: selftests: TDX: Add TDX UPM selftests for implicit conversion Ryan Afranji
2023-07-26 18:55 ` [PATCH v4 00/28] TDX KVM selftests Isaku Yamahata

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20230725220132.2310657-1-afranji@google.com \
    --to=afranji@google.com \
    --cc=aaronlewis@google.com \
    --cc=ackerleytng@google.com \
    --cc=axelrasmussen@google.com \
    --cc=bgardon@google.com \
    --cc=borntraeger@de.ibm.com \
    --cc=dmatlack@google.com \
    --cc=drjones@redhat.com \
    --cc=eesposit@redhat.com \
    --cc=erdemaktas@google.com \
    --cc=eric.auger@redhat.com \
    --cc=isaku.yamahata@intel.com \
    --cc=jmattson@google.com \
    --cc=kvm@vger.kernel.org \
    --cc=like.xu@linux.intel.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-kselftest@vger.kernel.org \
    --cc=maciej.szmigiero@oracle.com \
    --cc=maz@kernel.org \
    --cc=oupton@google.com \
    --cc=pbonzini@redhat.com \
    --cc=peterx@redhat.com \
    --cc=pgonda@google.com \
    --cc=pshier@google.com \
    --cc=ricarkol@google.com \
    --cc=runanwang@google.com \
    --cc=sagis@google.com \
    --cc=seanjc@google.com \
    --cc=shuah@kernel.org \
    --cc=vkuznets@redhat.com \
    --cc=wangyanan55@huawei.com \
    --cc=wei.w.wang@intel.com \
    --cc=xiaoyao.li@intel.com \
    --cc=yang.zhong@intel.com \
    --cc=zhenzhong.duan@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox