On Thu, Nov 04, 2021 at 08:29:49AM -0700, Dave Hansen wrote:
On 11/4/21 8:25 AM, Jarkko Sakkinen wrote:
On Thu, 2021-11-04 at 08:13 -0700, Dave Hansen wrote:
On 11/4/21 8:04 AM, Jarkko Sakkinen wrote:
Do we also need to deal with truncating the PCMD? (For those watching along at home, there are two things SGX swaps to RAM: the actual page data and also some metadata that ensures page integrity and helps prevent things like rolling back to old versions of swapped pages)
Yes.
This can be achieved by iterating through all of the enclave pages, which share the same shmem page for storing their PCMD's, as the one being faulted back. If none of those pages is swapped, the PCMD page can safely truncated.
I was thinking we could just read the page. If it's all 0's, truncate it.
Hmm... did ELDU zero PCMD as a side-effect?
I don't think so, but there's nothing stopping us from doing it ourselves.
Ok.
It should be fairly effecient just to check the pages by using encl->page_tree.
That sounds more complicated and slower than what I suggested. You could even just check the refcount on the page. I _think_ page cache pages have a refcount of 2. So, look for the refcount that means "no more PCMD in this page", and just free it if so.
Umh, so... there is total 32 PCMD's per one page.
/Jarkko