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; }