Messages in this thread | | | Date | Mon, 3 Jun 2019 13:37:12 -0700 | From | Sean Christopherson <> | Subject | Re: [RFC PATCH 3/9] x86/sgx: Allow userspace to add multiple pages in single ioctl() |
| |
On Mon, Jun 03, 2019 at 01:14:45PM -0700, Dave Hansen wrote: > On 5/31/19 4:31 PM, Sean Christopherson wrote: > > -struct sgx_enclave_add_page { > > +struct sgx_enclave_add_pages { > > __u64 addr; > > __u64 src; > > __u64 secinfo; > > + __u32 nr_pages; > > __u16 mrmask; > > } __attribute__((__packed__)); > > IMNHO this follows a user interface anti-pattern: exposing page sizes > where not strictly required. > > Think of how this would look to an application if page size was > variable. With this interface, they always need to scale their > operations by page size instead of just aligning it.
I briefly considered taking size in bytes, but I took a shortcut because EPC pages are architecturally defined to be 4k sized and aligned. That being said, I don't necessarily disagree, especially if nr_pages isn't squeezed into a u32.
> BTW, why is nr_pages a u32? Do we never envision a case where you can > add more than 4TB of memory to an enclave? ;)
Heh, fair enough. IIRC, a while back someone posted about having problems building a 512gb enclave in a 92mb EPC...
How about this for the intermediate patch:
struct sgx_enclave_add_region { __u64 addr; __u64 src; __u64 size; __u64 secinfo; __u16 mrmask; __u16 reserved16; __u32 reserved; }
and with the flags field:
struct sgx_enclave_add_region { __u64 addr; __u64 src; __u64 size; __u64 secinfo; __u16 mrmask; __u16 flags; __u32 reserved; }
| |