On 12/2/22 13:40, Kristen Carlson Accardi wrote: > On Fri, 2022-12-02 at 13:35 -0800, Dave Hansen wrote: >> On 12/2/22 10:36, Kristen Carlson Accardi wrote: >>> When allocating new Version Array (VA) pages, pass the struct >>> sgx_encl >>> of the enclave that is allocating the page. sgx_alloc_epc_page() >>> will >>> store this value in the encl_owner field of the struct >>> sgx_epc_page. In >>> a later patch, VA pages will be placed in an unreclaimable queue, >>> and then when the cgroup max limit is reached and there are no more >>> reclaimable pages and the enclave must be oom killed, all the >>> VA pages associated with that enclave can be uncharged and freed. >> What does this have to do with the 'encl' that is being passed, >> though? >> >> In other words, why is this new sgx_epc_page-to-encl mapping needed >> for >> VA pages now, but it wasn't before? > When we OOM kill an enclave, we want to get rid of all the associated > VA pages too. Prior to this patch, there wasn't a way to easily get the > VA pages associated with an enclave. Given an enclave, we have encl->va_pages to look up all the VA pages. Also, this patch's code allows you to go from a va page to an enclave. That seems like it's going the other direction from what an OOM-kill would need to do.