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

From: Luck, Tony
Date: Wed Jul 14 2021 - 16:59:06 EST


> 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.

> 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.

>> struct sgx_epc_page {
>> unsigned int section;
>> - unsigned int flags;
>> + u16 flags;
>> + u16 type;
>
> Could this be "enum sgx_page_type type" ?

Maybe. I thought I needed extra types (like FREE and DIRTY). But
Sean pointed out how to avoid some of them.

-Tony