Re: [RFC PATCH 3/9] x86/sgx: Allow userspace to add multiple pages in single ioctl()
From: Sean Christopherson <hidden>
Date: 2019-06-03 21:59:40
Also in:
lkml, selinux
On Mon, Jun 03, 2019 at 01:14:45PM -0700, Dave Hansen wrote:
On 5/31/19 4:31 PM, Sean Christopherson wrote:quoted
-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;
}