lkml.org 
[lkml]   [2018]   [Dec]   [6]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
From
Subject[RFC PATCH v2 0/4] x86: Add vDSO exception fixup for SGX
Date
This version is almost entirely about the vDSO function itself,
i.e. patch 4/4. Feel free to ignore patches 2/4 and 3/4, I need
to do (a lot) more legwork to address feedback and improve their
changelogs. I'm expecting that to take a fair amount of time and
wanted to get the alternative exit handler idea out there ASAP.

The new vDSO function builds but is otherwise completely untested.

v2:
- For all intents and purposes, rewrite the SGX vDSO function.
This version is quite a bit different than anything discussed in
the past. Rather than provide separate a separate function or an
explicit parameter to request ERESUME, e.g. to recover after a
fault, take an optional "exit handler" that provides the caller
the opportunity to specify if and how the enclave should be
resumed. More details in the changelog.

- Rename it to __vdso_sgx_enter_enclave() to abstract the details
of EENTER and ERESUME to some degree.

- Give the enclave RDI, RSI and RDX to pass data out of the enclave.

- Call fixup_vdso_exception() in do_int3().


v1: https://lkml.kernel.org/r/20181205232012.28920-1-sean.j.christopherson@intel.com


Sean Christopherson (4):
x86/vdso: Add support for exception fixup in vDSO functions
x86/fault: Attempt to fixup unhandled #PF in vDSO before signaling
x86/traps: Attempt to fixup exceptions in vDSO before signaling
x86/vdso: Add __vdso_sgx_enter_enclave() to wrap SGX enclave
transitions

arch/x86/entry/vdso/Makefile | 5 +-
arch/x86/entry/vdso/extable.c | 37 +++++++
arch/x86/entry/vdso/extable.h | 17 ++++
arch/x86/entry/vdso/vdso-layout.lds.S | 9 +-
arch/x86/entry/vdso/vdso.lds.S | 1 +
arch/x86/entry/vdso/vdso2c.h | 58 +++++++++--
arch/x86/entry/vdso/vsgx_enter_enclave.c | 119 +++++++++++++++++++++++
arch/x86/include/asm/vdso.h | 5 +
arch/x86/kernel/traps.c | 15 +++
arch/x86/mm/fault.c | 7 ++
10 files changed, 262 insertions(+), 11 deletions(-)
create mode 100644 arch/x86/entry/vdso/extable.c
create mode 100644 arch/x86/entry/vdso/extable.h
create mode 100644 arch/x86/entry/vdso/vsgx_enter_enclave.c

--
2.19.2

\
 
 \ /
  Last update: 2018-12-06 23:20    [W:0.066 / U:1.072 seconds]
©2003-2018 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site