From: Sean Christopherson <sean.j.christopherson@intel.com>
To: Andy Lutomirski <luto@kernel.org>,
Thomas Gleixner <tglx@linutronix.de>,
Ingo Molnar <mingo@redhat.com>, Borislav Petkov <bp@alien8.de>,
x86@kernel.org, Dave Hansen <dave.hansen@linux.intel.com>,
Peter Zijlstra <peterz@infradead.org>
Cc: "H. Peter Anvin" <hpa@zytor.com>,
linux-kernel@vger.kernel.org,
Andy Lutomirski <luto@amacapital.net>,
Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>,
Josh Triplett <josh@joshtriplett.org>
Subject: [RFC PATCH 0/4] x86: Add vDSO exception fixup for SGX
Date: Wed, 5 Dec 2018 15:20:08 -0800 [thread overview]
Message-ID: <20181205232012.28920-1-sean.j.christopherson@intel.com> (raw)
First things first, this RFC is not intended to address whether or not
vDSO is the appropriate method for supporting SGX enclaves, but rather
its purpose is to hammer out the vDSO implementation *if* we decide it
is the best approach.
Though the code technically stands alone, the intent is to roll it
into the main SGX series once it has been beat on for a bit. For that
reason there are no dependencies on CONFIG_SGX (which doesn't exist)
or any other bits that one might expect.
The quick and dirty is that for all intents and purposes, the SGX
architecture requires userspace to gracefully handle exceptions. The
vast majority of enclaves are expected to leverage a library to handle
much of the plumbing. Unfortunately for us (them?), putting two and
two together means SGX libraries would need to handle most signals on
behalf of the enclave's application, which is far from ideal.
One proposed solution for supporting SGX without requiring signals is
to wrap enclave transitions in a vDSO function so that SGX exceptions
can be intercepted via exception fixup and returned inline to the
caller. This RFC series adds exception fixup and SGX support to the
vDSO.
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_eenter() 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_eenter.c | 108 ++++++++++++++++++++++++++
arch/x86/include/asm/vdso.h | 5 ++
arch/x86/kernel/traps.c | 11 +++
arch/x86/mm/fault.c | 7 ++
10 files changed, 247 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_eenter.c
--
2.19.2
next reply other threads:[~2018-12-05 23:20 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-12-05 23:20 Sean Christopherson [this message]
2018-12-05 23:20 ` [RFC PATCH 1/4] x86/vdso: Add support for exception fixup in vDSO functions Sean Christopherson
2018-12-05 23:20 ` [RFC PATCH 2/4] x86/fault: Attempt to fixup unhandled #PF in vDSO before signaling Sean Christopherson
2018-12-06 18:17 ` Dave Hansen
2018-12-06 18:20 ` Sean Christopherson
2018-12-06 18:46 ` Andy Lutomirski
2018-12-05 23:20 ` [RFC PATCH 3/4] x86/traps: Attempt to fixup exceptions " Sean Christopherson
2018-12-06 18:22 ` Dave Hansen
2018-12-06 18:49 ` Andy Lutomirski
2018-12-05 23:20 ` [RFC PATCH 4/4] x86/vdso: Add __vdso_sgx_eenter() to wrap SGX enclave transitions Sean Christopherson
2018-12-05 23:40 ` Andy Lutomirski
2018-12-06 13:55 ` Sean Christopherson
2018-12-06 14:17 ` Sean Christopherson
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20181205232012.28920-1-sean.j.christopherson@intel.com \
--to=sean.j.christopherson@intel.com \
--cc=bp@alien8.de \
--cc=dave.hansen@linux.intel.com \
--cc=hpa@zytor.com \
--cc=jarkko.sakkinen@linux.intel.com \
--cc=josh@joshtriplett.org \
--cc=linux-kernel@vger.kernel.org \
--cc=luto@amacapital.net \
--cc=luto@kernel.org \
--cc=mingo@redhat.com \
--cc=peterz@infradead.org \
--cc=tglx@linutronix.de \
--cc=x86@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox