Messages in this thread | | | From | Sean Christopherson <> | Subject | [RFC PATCH v2 0/4] x86: Add vDSO exception fixup for SGX | Date | Thu, 6 Dec 2018 14:19:18 -0800 |
| |
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
| |