Messages in this thread | | | Subject | Re: [PATCH 1/2] x86: sgx_vepc: extract sgx_vepc_remove_page | From | Dave Hansen <> | Date | Mon, 13 Sep 2021 07:05:57 -0700 |
| |
On 9/13/21 6:11 AM, Paolo Bonzini wrote: > Windows expects all pages to be in uninitialized state on startup. > In order to implement this, we will need a ioctl that performs > EREMOVE on all pages mapped by a /dev/sgx_vepc file descriptor: > other possibilities, such as closing and reopening the device, > are racy.
Hi Paolo,
How does this end up happening in the first place?
All enclave pages should start out on 'sgx_dirty_page_list' and ksgxd sanitizes them with EREMOVE before making them available. That should cover EREMOVE after reboots while SGX pages are initialized, including kexec().
sgx_vepc_free_page() should do the same for pages that a guest not not clean up properly.
sgx_encl_free_epc_page() does an EREMOVE after a normal enclave has used a page.
Those are the only three cases that I can think of. So, it sounds like one of those is buggy, or there's another unexpected path out there. Ultimately, I think it would be really handy if we could do this EREMOVE implicitly and without any new ABI.
| |