On Sat, Nov 17, 2018 at 11:16 PM Jarkko Sakkinen <jarkko.sakki...@linux.intel.com> wrote: > > On Thu, Nov 01, 2018 at 10:53:40AM -0700, Andy Lutomirski wrote: > > Hi all- > > > > The people working on SGX enablement are grappling with a somewhat > > annoying issue: the x86 EENTER instruction is used from user code and > > can, as part of its normal-ish operation, raise an exception. It is > > also highly likely to be used from a library, and signal handling in > > libraries is unpleasant at best. > > > > There's been some discussion of adding a vDSO entry point to wrap > > EENTER and do something sensible with the exceptions, but I'm > > wondering if a more general mechanism would be helpful. > > I haven't really followed all of this discussion because I've been busy > working on the patch set but for me all of these approaches look awfully > complicated. > > I'll throw my own suggestion and apologize if this has been already > suggested and discarded: return-to-AEP. > > My idea is to do just a small extension to SGX AEX handling. At the > moment hardware will RAX, RBX and RCX with ERESUME parameters. We can > fill extend this by filling other three spare registers with exception > information.
I have two issues with this approach: 1. The kernel needs some way to know *when* to apply this fixup. Decoding the instruction stream and doing it to all exceptions that hit an ENCLU instruction seems like a poor design. 2. It starts exposing what looks like a more generic exception handling mechanism to userspace, except that it's nonsensical for anything other than ENCLU.