lkml.org 
[lkml]   [2018]   [Nov]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [PATCH v16 18/22] platform/x86: Intel SGX driver
On Tue, Nov 06, 2018 at 08:40:00AM -0800, Sean Christopherson wrote:
> On Tue, 2018-11-06 at 15:45 +0200, Jarkko Sakkinen wrote:
> > Intel Software Guard eXtensions (SGX) is a set of CPU instructions that
> > can be used by applications to set aside private regions of code and
> > data. The code outside the enclave is disallowed to access the memory
> > inside the enclave by the CPU access control.
> > 
> > SGX driver provides a ioctl API for loading and initializing enclaves.
> > Address range for enclaves is reserved with mmap() and they are
> > destroyed with munmap(). Enclave construction, measurement and
> > initialization is done with the provided the ioctl API.
>
> ...
>
> > +struct sgx_encl {
> > + unsigned int flags;
> > + uint64_t attributes;
> > + uint64_t xfrm;
> > + unsigned int page_cnt;
> > + unsigned int secs_child_cnt;
> > + struct mutex lock;
> > + struct mm_struct *mm;
> > + struct file *backing;
>
> Is there any particular reason why the kernel manages the backing for
> the enclave and the PCMDs?  Could we have userspace provide the backing
> either through the ECREATE ioctl() or maybe a completely new ioctl(),
> e.g. to give userspace the option to back the enclave with a NVDIMM
> instead of RAM?  A separate ioctl() with control flags might give us
> some flexibility in the future, e.g. maybe there are use cases where
> userspace would prefer to kill enclaves rather than swap EPC.

Not really except that no one has complained. The very first swapping
code that I implemented used a VMA as backing storage. I could take
pieces of that code to replace shmem specifics. The difference was that
the driver did vm_mmap(). Now that you suggested the above I wonder how
it did not came to mind back then to provide the VMA as parameter.

A single buffer that can hold both PCMD entries and swapped pages in its
address space would probably be the best way to do it. I would add that
as a field to struct sgx_enclave_create. If we want the kill-behavior,
you could signal that with a NULL value.

/Jarkko

\
 
 \ /
  Last update: 2018-11-07 17:39    [W:0.122 / U:1.008 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site