Re: [PATCH 1/4] x86/sgx: Track phase and type of SGX EPC pages

From: Reinette Chatre
Date: Wed Jul 14 2021 - 17:21:51 EST


Hi Tony,

On 7/14/2021 1:59 PM, Luck, Tony wrote:
Could this tracking be done at the enclave page (struct sgx_encl_page)
instead?

In principle yes. Though Sean has some issues with me tracking types
at all.

For the SGX2 work knowing the page types are useful. Some instructions only work on certain page types and knowing beforehand whether an instruction could work helps to avoid dealing with the errors when it does not work.

The enclave page's EPC page information is not available when
the page is in swap and it would be useful to know the page type without
loading the page from swap. The information would continue to be
accessible from struct epc_page via the owner pointer that may make some
of the changes easier since it would not be needed to pass the page type
around so much and thus possibly address the SECS page issue that Sean
pointed out in
https://lore.kernel.org/lkml/YO3FuBupQTKYaKBf@xxxxxxxxxx/

I think I noticed that the "owner" pointer in sgx_encl_page doesn't point
back to the epc_page for all types of SGX pages. So some additional
changes would be needed. I'm not at all sure why this is different (or
what use the non-REG pages use "owner" for.

This may be VA pages? struct sgx_va_page also contains a pointer to an EPC page. I did not consider that for this case. Perhaps these could be identified uniquely.

Reinette