[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20181206221922.31012-1-sean.j.christopherson@intel.com>
Date: Thu, 6 Dec 2018 14:19:18 -0800
From: Sean Christopherson <sean.j.christopherson@...el.com>
To: Andy Lutomirski <luto@...nel.org>,
Thomas Gleixner <tglx@...utronix.de>,
Ingo Molnar <mingo@...hat.com>, Borislav Petkov <bp@...en8.de>,
x86@...nel.org, Dave Hansen <dave.hansen@...ux.intel.com>,
Peter Zijlstra <peterz@...radead.org>
Cc: "H. Peter Anvin" <hpa@...or.com>, linux-kernel@...r.kernel.org,
Andy Lutomirski <luto@...capital.net>,
Jarkko Sakkinen <jarkko.sakkinen@...ux.intel.com>,
Josh Triplett <josh@...htriplett.org>
Subject: [RFC PATCH v2 0/4] x86: Add vDSO exception fixup for SGX
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
Powered by blists - more mailing lists