RE: [PATCH v3 1/2] x86/sgx: Use sgx_nr_used_pages for EPC page count instead of sgx_nr_free_pages

From: Reshetova, Elena
Date: Wed Apr 16 2025 - 07:51:33 EST



> On Tue, 2025-04-15 at 14:51 +0300, Elena Reshetova wrote:
> > sgx_nr_free_pages is an atomic that is used to keep track of
> > free EPC pages and detect whenever page reclaiming should start.
> > Since successful execution of ENCLS[EUPDATESVN] requires empty
>
> The mentioning of ENCLS[EUPDATESVN] is kinda out of blue here. It's better
> to
> introduce it first like the next patch does.

Thank you, will expand more.

>
> > EPC and preferably a fast lockless way of checking for this
> > condition in all code paths where EPC is already used, change the
> > reclaiming code to track the number of used pages via
> > sgx_nr_used_pages instead of sgx_nr_free_pages.
> > For this change to work in the page reclamation code, add a new
> > variable, sgx_nr_total_pages, that will keep track of total
> > number of EPC pages.
> >
> > It would have been possible to implement ENCLS[EUPDATESVN] using
> > existing sgx_nr_free_pages counter and a new sgx_nr_total_pages
> > counter, but it won't be possible to avoid taking a lock *every time*
> > a new EPC page is being allocated. The conversion of sgx_nr_free_pages
> > into sgx_nr_used_pages allows avoiding the lock in all cases except
> > when it is the first EPC page being allocated via a quick
> > atomic_long_inc_not_zero check.
> >
> > Note: The serialization for sgx_nr_total_pages is not needed because
> > the variable is only updated during the initialization and there's no
> > concurrent access.
> >
> > Signed-off-by: Elena Reshetova <elena.reshetova@xxxxxxxxx>
>
> Reviewed-by: Kai Huang <kai.huang@xxxxxxxxx>

Thank you very much for your review!