> 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