On Mon, Sep 16, 2019 at 07:14:00AM +0300, Jarkko Sakkinen wrote: > My flush of updates for v23. Contains a bunch of clean ups and bug > fixes with the main focus on the page reclaimer. The main goal has > been to disclose all the other possibilities for failure after > ENCLS[EBLOCK] other than EPCM conflict when the whole EPC is > invalidated. I have at least one more update to the reclaimer but want to merge these first. It adds optional struct epc_page **reclaimed_page to sgx_reclaim_pages(). If NULL, the function will just append everything to the free pool. Otherwise, it will use it to return one of the reclaimed pages if there are any. sgx_alloc_page() then does the following when @reclaim=true: 1. If page in free page pool, take one. 2. If not, try to reclaim one. 3. If nothing was reclaimed -ENOMEM. Right now sgx_alloc_page() can in theory take however long. I wonder why we do not return -ENOMEM also when @reclaim=false. Where did this returning -EBUSY came from? Can't recall. /Jarkko