On Thu, Mar 11, 2021, Kai Huang wrote: > From: Jarkko Sakkinen <jarkko@xxxxxxxxxx> > > EREMOVE takes a page and removes any association between that page and > an enclave. It must be run on a page before it can be added into > another enclave. Currently, EREMOVE is run as part of pages being freed > into the SGX page allocator. It is not expected to fail. > > KVM does not track how guest pages are used, which means that SGX > virtualization use of EREMOVE might fail. > > Break out the EREMOVE call from the SGX page allocator. This will allow > the SGX virtualization code to use the allocator directly. (SGX/KVM > will also introduce a more permissive EREMOVE helper). > > Implement original sgx_free_epc_page() as sgx_encl_free_epc_page() to be > more specific that it is used to free EPC page assigned to one enclave. > Print an error message when EREMOVE fails to explicitly call out EPC > page is leaked, and requires machine reboot to get leaked pages back. > > Signed-off-by: Jarkko Sakkinen <jarkko@xxxxxxxxxx> > Co-developed-by: Kai Huang <kai.huang@xxxxxxxxx> > Acked-by: Jarkko Sakkinen <jarkko@xxxxxxxxxx> > Signed-off-by: Kai Huang <kai.huang@xxxxxxxxx> > --- > v2->v3: > > - Fixed bug during copy/paste which results in SECS page and va pages are not > correctly freed in sgx_encl_release() (sorry for the mistake). > - Added Jarkko's Acked-by. That Acked-by should either be dropped or moved above Co-developed-by to make checkpatch happy. Reviewed-by: Sean Christopherson <seanjc@xxxxxxxxxx>