mbox series

[for_v37,0/6] x86/vdso: x86/sgx: Rework SGX vDSO API

Message ID 20200904104437.29555-1-sean.j.christopherson@intel.com (mailing list archive)
Headers show
Series x86/vdso: x86/sgx: Rework SGX vDSO API | expand

Message

Sean Christopherson Sept. 4, 2020, 10:44 a.m. UTC
Rework __vdso_sgx_enter_enclave() to move all input/output params, except
for pass-through GPRs, into a single struct.  With the new struct, add
a pass-through param requested by Nathaniel[1], fix a long-standing nit
from Andy[2], and add a flags field to allow for future extensions.

 1. Add an opaque param to pass data from the runtime to its handler.
    https://lkml.kernel.org/r/CAOASepOFh-vOrNZEVDFrDSuHs+9GEzzpXUTG-fZMuyjWAkpRWw@mail.gmail.com

 2. Use a dedicated exit reason instead of using -EFAULT for "exception"
    (and effectively -EINTR for interrupts, too).
    https://lkml.kernel.org/r/90D05734-1583-4306-A9A4-18E4A1390F3B@amacapital.net

RFC->V1:
  - Drop the EXIT_ON_INTERRUPT patch. [Andy]
  - Fix the macro names in the assembly code. [Jarkko]
  - Move the leaf back into the exception sub-struct.  The leaf is fully
    redundant with SGX_SYNCHRONOUS_EXIT.
  - Add selftest support. [Jarkko]

Jarkko, I didn't address you comment about moving the vDSO kernel docs
comments to the .rst file because I have an question on that and didn't
want to hold this up.  But Intel's mail servers appear to be on the fritz,
so it might be a moot point...

Sean Christopherson (6):
  x86/vdso: x86/sgx: Explicitly force 8-byte CMP for detecting user
    handler
  x86/vdso: x86/sgx: Rework __vdso_sgx_enter_enclave() API
  x86/vdso: x86/sgx: Introduce dedicated SGX exit reasons for vDSO
  selftests/sgx: Update the SGX selftest to match the reworked vDSO API
  selftests/sgx: Sanity check the return value of the vDSO call
  selftests/sgx: Add a smoke test to ensure the user handler is invoked

 arch/x86/entry/vdso/vsgx_enter_enclave.S | 76 +++++++++++++-------
 arch/x86/include/uapi/asm/sgx.h          | 88 ++++++++++++++++--------
 tools/testing/selftests/sgx/call.S       | 10 +--
 tools/testing/selftests/sgx/main.c       | 61 ++++++++++++----
 tools/testing/selftests/sgx/main.h       |  2 +-
 5 files changed, 160 insertions(+), 77 deletions(-)