[0/7] x86/sgx: Clean up and enhance add pages ioctl
mbox series

Message ID 20190605194845.926-1-sean.j.christopherson@intel.com
Headers show
Series
  • x86/sgx: Clean up and enhance add pages ioctl
Related show

Message

Sean Christopherson June 5, 2019, 7:48 p.m. UTC
This series is intended to be included in v21 of Jarkko's SGX series and
applies on Jarkko's current master:

  dfc89a83b5bc ("docs: x86/sgx: Document the enclave API")

The primary goal of the series is to tweak the ioctl for adding pages to
an enclave so that it is somewhat extensible, e.g. add a flags field that
can be reused for access control integration and SGX2/EAUG, and add a size
field so that multiple pages can be added in a single call (batching EADD
has been mentioned at various times in the past).

The secondary goal is to improve the performance of building enclaves.
Handling multiple pages in a single call helps somewhat, but the real win
(for some enclaves) is using the kernel's zero page as the source for EADD
when possible.

Sean Christopherson (7):
  x86/sgx: Remove dead code to handle non-existent IOR ioctl
  x86/sgx: Remove unnecessary @cmd parameter from ioctl helpers
  x86/sgx: Let ioctl helpers do copy to/from user
  x86/sgx: Allow userspace to add multiple pages in single ioctl()
  x86/sgx: Add flag to zero added region instead of copying from source
  x86/sgx: Use the actual zero page as the source when adding zero pages
  x86/sgx: Add a reserved field to sgx_enclave_add_region to drop
    'packed'

 Documentation/x86/sgx/3.API.rst        |   2 +-
 arch/x86/include/uapi/asm/sgx.h        |  30 +--
 arch/x86/kernel/cpu/sgx/driver/ioctl.c | 252 +++++++++++++++----------
 3 files changed, 171 insertions(+), 113 deletions(-)

Comments

Jarkko Sakkinen June 12, 2019, 3:16 p.m. UTC | #1
On Wed, Jun 05, 2019 at 12:48:38PM -0700, Sean Christopherson wrote:
> This series is intended to be included in v21 of Jarkko's SGX series and
> applies on Jarkko's current master:
> 
>   dfc89a83b5bc ("docs: x86/sgx: Document the enclave API")
> 
> The primary goal of the series is to tweak the ioctl for adding pages to
> an enclave so that it is somewhat extensible, e.g. add a flags field that
> can be reused for access control integration and SGX2/EAUG, and add a size
> field so that multiple pages can be added in a single call (batching EADD
> has been mentioned at various times in the past).
> 
> The secondary goal is to improve the performance of building enclaves.
> Handling multiple pages in a single call helps somewhat, but the real win
> (for some enclaves) is using the kernel's zero page as the source for EADD
> when possible.

For v21 I will add 1, 2 and 6 from these. Thanks.

I'll change the size or mrmask field to 32 bits.

/Jarkko
Jarkko Sakkinen June 12, 2019, 6:14 p.m. UTC | #2
On Wed, Jun 12, 2019 at 06:16:05PM +0300, Jarkko Sakkinen wrote:
> On Wed, Jun 05, 2019 at 12:48:38PM -0700, Sean Christopherson wrote:
> > This series is intended to be included in v21 of Jarkko's SGX series and
> > applies on Jarkko's current master:
> > 
> >   dfc89a83b5bc ("docs: x86/sgx: Document the enclave API")
> > 
> > The primary goal of the series is to tweak the ioctl for adding pages to
> > an enclave so that it is somewhat extensible, e.g. add a flags field that
> > can be reused for access control integration and SGX2/EAUG, and add a size
> > field so that multiple pages can be added in a single call (batching EADD
> > has been mentioned at various times in the past).
> > 
> > The secondary goal is to improve the performance of building enclaves.
> > Handling multiple pages in a single call helps somewhat, but the real win
> > (for some enclaves) is using the kernel's zero page as the source for EADD
> > when possible.
> 
> For v21 I will add 1, 2 and 6 from these. Thanks.

I meant to say 1, 2 and 3 (typo). 

/Jarkko