Re: [RFC PATCH v2 04/26] x86/sgx: Add SGX_CHILD_PRESENT hardware error code

Jarkko Sakkinen
2021-01-20T13:46:26Z

On Mon, Jan 18, 2021 at 04:26:52PM +1300, Kai Huang wrote:
> From: Sean Christopherson <sean.j.christopherson@intel.com>
>
> 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@intel.com>
> Acked-by: Jarkko Sakkinen <jarkko@kernel.org>
> Signed-off-by: Kai Huang <kai.huang@intel.com>
> ---
> 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