On Mon, Jan 18, 2021 at 04:26:52PM +1300, Kai Huang wrote: > From: Sean Christopherson <sean.j.christopherson@xxxxxxxxx> > > SGX virtualization requires to allocate "raw" EPC and use it as "virtual > EPC" for SGX guest. Unlike EPC used by SGX driver, virtual EPC doesn't > track how EPC pages are used in VM, e.g. (de)construction of enclaves, > so it cannot guarantee EREMOVE success, e.g. it doesn't have a priori > knowledge of which pages are SECS with non-zero child counts. > > Add SGX_CHILD_PRESENT for use by SGX virtualization to assert EREMOVE > failures are expected, but only due to SGX_CHILD_PRESENT. > > Signed-off-by: Sean Christopherson <sean.j.christopherson@xxxxxxxxx> > Acked-by: Jarkko Sakkinen <jarkko@xxxxxxxxxx> > Signed-off-by: Kai Huang <kai.huang@xxxxxxxxx> > --- > v1->v2: > > - Change title to reflect hardware error code. > > --- > arch/x86/kernel/cpu/sgx/arch.h | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/arch/x86/kernel/cpu/sgx/arch.h b/arch/x86/kernel/cpu/sgx/arch.h > index dd7602c44c72..56b0f8ae3f92 100644 > --- a/arch/x86/kernel/cpu/sgx/arch.h > +++ b/arch/x86/kernel/cpu/sgx/arch.h > @@ -26,12 +26,14 @@ > * enum sgx_return_code - The return code type for ENCLS, ENCLU and ENCLV > * %SGX_NOT_TRACKED: Previous ETRACK's shootdown sequence has not > * been completed yet. > + * %SGX_CHILD_PRESENT Enclave has child pages present in the EPC. s/Enclave/SECS/ > * %SGX_INVALID_EINITTOKEN: EINITTOKEN is invalid and enclave signer's > * public key does not match IA32_SGXLEPUBKEYHASH. > * %SGX_UNMASKED_EVENT: An unmasked event, e.g. INTR, was received > */ > enum sgx_return_code { > SGX_NOT_TRACKED = 11, > + SGX_CHILD_PRESENT = 13, > SGX_INVALID_EINITTOKEN = 16, > SGX_UNMASKED_EVENT = 128, > }; > -- > 2.29.2 > > /Jarkko