Re: [PATCH 13/25] x86/sgx: Support adding of pages to initialized enclave

From: Reinette Chatre
Date: Mon Dec 13 2021 - 17:13:30 EST


Hi Jarkko,

On 12/11/2021 12:00 AM, Jarkko Sakkinen wrote:
On Mon, 2021-12-06 at 13:44 -0800, Reinette Chatre wrote:
On 12/4/2021 3:13 PM, Jarkko Sakkinen wrote:
On Wed, Dec 01, 2021 at 11:23:11AM -0800, Reinette Chatre wrote:

...

Accessing an uninitialized address from outside the enclave also triggers
this flow but the page will remain in PENDING state until accepted from
within the enclave.

What does it mean being in PENDING state, and more imporantly, what is
PENDING state? What does a memory access within enclave cause when it
touch a page within this state?

The PENDING state is the enclave page state from the SGX hardware's
perspective. The OS uses the ENCLS[EAUG] SGX2 function to add a new page
to the enclave but from the SGX hardware's perspective it would be in a
PENDING state until the enclave accepts the page. An access to the page
in PENDING state would result in a page fault.


I see a lot of text in the commit message but zero mentions about EPCM
expect this one sudden mention about PENDING field without attaching
it to anything concrete.

My apologies - I will add this to this changelog. This matches your
request to describe the __eaug() wrapper introduced in patch 02/25.
Would you like me to duplicate this information here and in that patch
(a new patch dedicated to the __eaug() wrapper) or would you be ok if I
introduce the wrappers all together briefly as in the example you
provide and then detail the flows where the wrappers are used - like
this patch?

I think it would be a good place to describe these details in 02/25,
and skip them in rest of the patches.


Will do. I do think describing this amount of detail for the new SGX2 functions would be too much for a single patch so I currently plan to split that (02/25) patch into a new patch per SGX2 instruction. Is that ok with you or would you like to keep it in a single patch?

Reinette