linux-kselftest.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 00/13] KVM: selftests: Add tests for SEV and SEV-ES guests
@ 2021-12-16 17:13 Michael Roth
  2021-12-16 17:13 ` [PATCH v2 01/13] KVM: selftests: move vm_phy_pages_alloc() earlier in file Michael Roth
                   ` (13 more replies)
  0 siblings, 14 replies; 24+ messages in thread
From: Michael Roth @ 2021-12-16 17:13 UTC (permalink / raw)
  To: linux-kselftest
  Cc: kvm, linux-kernel, x86, Nathan Tempelman, Marc Orr,
	Steve Rutherford, Sean Christopherson, Mingwei Zhang,
	Brijesh Singh, Tom Lendacky, Varad Gautam, Shuah Khan,
	Vitaly Kuznetsov, David Woodhouse, Ricardo Koller, Jim Mattson,
	Joerg Roedel, Thomas Gleixner, Ingo Molnar, Borislav Petkov,
	H . Peter Anvin, Krish Sadhukhan, Peter Gonda

These patches and are also available at:

  https://github.com/mdroth/linux/commits/sev-selftests-v2

They are based on top of the recent RFC:

  "KVM: selftests: Add support for test-selectable ucall implementations"
  https://lore.kernel.org/all/20211210164620.11636-1-michael.roth@amd.com/T/

  https://github.com/mdroth/linux/commits/sev-selftests-ucall-rfc1

which provides a new ucall implementation that this series relies on.
Those patches were in turn based on kvm/next as of 2021-12-10.

== OVERVIEW ==

This series introduces a set of memory encryption-related parameter/hooks
in the core kselftest library, then uses the hooks to implement a small
library for creating/managing SEV, SEV-ES, and (eventually) SEV-SNP guests.
This library is then used to implement a basic boot/memory test that's run
for variants of SEV/SEV-ES guests.

- Patches 1-8 implement SEV boot tests and should run against existing
  kernels
- Patch 9 is a KVM changes that's required to allow SEV-ES/SEV-SNP
  guests to boot with an externally generated page table, and is a
  host kernel prequisite for the remaining patches in the series.
- Patches 10-13 extend the boot tests to cover SEV-ES

Any review/comments are greatly appreciated!

v2: 
- rebased on ucall_ops patchset (which is based on kvm/next 2021-12-10)
- remove SEV-SNP support for now
- provide encryption bitmap as const* to original rather than as a copy
  (Mingwei, Paolo)
- drop SEV-specific synchronization helpers in favor of ucall_ops_halt (Paolo)
- don't pass around addresses with c-bit included, add them as-needed via
  addr_gpa2raw() (e.g. when adding PTEs, or initializing initial
  cr3/vm->pgd) (Paolo)
- rename lib/sev.c functions for better consistency (Krish)
- move more test setup code out of main test function and into
  setup_test_common() (Krish)
- suppress compiler warnings due to -Waddress-of-packed-member like kernel
  does
- don't require SNP support in minimum firmware version detection (Marc)
- allow SEV device path to be configured via make SEV_PATH= (Marc)

----------------------------------------------------------------
Michael Roth (13):
      KVM: selftests: move vm_phy_pages_alloc() earlier in file
      KVM: selftests: sparsebit: add const where appropriate
      KVM: selftests: add hooks for managing encrypted guest memory
      KVM: selftests: handle encryption bits in page tables
      KVM: selftests: add support for encrypted vm_vaddr_* allocations
      KVM: selftests: ensure ucall_shared_alloc() allocates shared memory
      KVM: selftests: add library for creating/interacting with SEV guests
      KVM: selftests: add SEV boot tests
      KVM: SVM: include CR3 in initial VMSA state for SEV-ES guests
      KVM: selftests: account for error code in #VC exception frame
      KVM: selftests: add support for creating SEV-ES guests
      KVM: selftests: add library for handling SEV-ES-related exits
      KVM: selftests: add SEV-ES boot tests

 arch/x86/include/asm/kvm-x86-ops.h                 |   1 +
 arch/x86/include/asm/kvm_host.h                    |   1 +
 arch/x86/kvm/svm/svm.c                             |  19 ++
 arch/x86/kvm/vmx/vmx.c                             |   6 +
 arch/x86/kvm/x86.c                                 |   1 +
 tools/testing/selftests/kvm/.gitignore             |   1 +
 tools/testing/selftests/kvm/Makefile               |  10 +-
 .../testing/selftests/kvm/include/kvm_util_base.h  |  10 +
 tools/testing/selftests/kvm/include/sparsebit.h    |  36 +--
 tools/testing/selftests/kvm/include/x86_64/sev.h   |  44 +++
 .../selftests/kvm/include/x86_64/sev_exitlib.h     |  14 +
 tools/testing/selftests/kvm/include/x86_64/svm.h   |  35 +++
 .../selftests/kvm/include/x86_64/svm_util.h        |   1 +
 tools/testing/selftests/kvm/lib/kvm_util.c         | 270 ++++++++++++------
 .../testing/selftests/kvm/lib/kvm_util_internal.h  |  10 +
 tools/testing/selftests/kvm/lib/sparsebit.c        |  48 ++--
 tools/testing/selftests/kvm/lib/ucall_common.c     |   4 +-
 tools/testing/selftests/kvm/lib/x86_64/handlers.S  |   4 +-
 tools/testing/selftests/kvm/lib/x86_64/processor.c |  16 +-
 tools/testing/selftests/kvm/lib/x86_64/sev.c       | 252 ++++++++++++++++
 .../testing/selftests/kvm/lib/x86_64/sev_exitlib.c | 249 ++++++++++++++++
 .../selftests/kvm/x86_64/sev_all_boot_test.c       | 316 +++++++++++++++++++++
 22 files changed, 1215 insertions(+), 133 deletions(-)
 create mode 100644 tools/testing/selftests/kvm/include/x86_64/sev.h
 create mode 100644 tools/testing/selftests/kvm/include/x86_64/sev_exitlib.h
 create mode 100644 tools/testing/selftests/kvm/lib/x86_64/sev.c
 create mode 100644 tools/testing/selftests/kvm/lib/x86_64/sev_exitlib.c
 create mode 100644 tools/testing/selftests/kvm/x86_64/sev_all_boot_test.c



^ permalink raw reply	[flat|nested] 24+ messages in thread

end of thread, other threads:[~2022-01-04 23:42 UTC | newest]

Thread overview: 24+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-12-16 17:13 [PATCH v2 00/13] KVM: selftests: Add tests for SEV and SEV-ES guests Michael Roth
2021-12-16 17:13 ` [PATCH v2 01/13] KVM: selftests: move vm_phy_pages_alloc() earlier in file Michael Roth
2021-12-16 17:13 ` [PATCH v2 02/13] KVM: selftests: sparsebit: add const where appropriate Michael Roth
2021-12-16 17:13 ` [PATCH v2 03/13] KVM: selftests: add hooks for managing encrypted guest memory Michael Roth
2021-12-16 17:13 ` [PATCH v2 04/13] KVM: selftests: handle encryption bits in page tables Michael Roth
2021-12-16 17:13 ` [PATCH v2 05/13] KVM: selftests: add support for encrypted vm_vaddr_* allocations Michael Roth
2021-12-16 17:13 ` [PATCH v2 06/13] KVM: selftests: ensure ucall_shared_alloc() allocates shared memory Michael Roth
2021-12-16 17:13 ` [PATCH v2 07/13] KVM: selftests: add library for creating/interacting with SEV guests Michael Roth
2021-12-16 20:35   ` Peter Gonda
2021-12-17 16:17     ` Michael Roth
2021-12-22 14:52       ` Paolo Bonzini
2021-12-16 17:13 ` [PATCH v2 08/13] KVM: selftests: add SEV boot tests Michael Roth
2021-12-20  1:49   ` Mingwei Zhang
2021-12-21 15:40     ` Michael Roth
2021-12-21 17:26       ` Michael Roth
2021-12-22 14:55       ` Paolo Bonzini
2021-12-16 17:13 ` [PATCH v2 09/13] KVM: SVM: include CR3 in initial VMSA state for SEV-ES guests Michael Roth
2021-12-22 14:25   ` Paolo Bonzini
2021-12-16 17:13 ` [PATCH v2 10/13] KVM: selftests: account for error code in #VC exception frame Michael Roth
2021-12-16 17:13 ` [PATCH v2 11/13] KVM: selftests: add support for creating SEV-ES guests Michael Roth
2021-12-16 17:13 ` [PATCH v2 12/13] KVM: selftests: add library for handling SEV-ES-related exits Michael Roth
2021-12-16 17:13 ` [PATCH v2 13/13] KVM: selftests: add SEV-ES boot tests Michael Roth
2021-12-22 14:56 ` [PATCH v2 00/13] KVM: selftests: Add tests for SEV and SEV-ES guests Paolo Bonzini
2022-01-04 23:41   ` Michael Roth

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).