[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20200528195917.GF30353@linux.intel.com>
Date: Thu, 28 May 2020 12:59:17 -0700
From: Sean Christopherson <sean.j.christopherson@...el.com>
To: Jarkko Sakkinen <jarkko.sakkinen@...ux.intel.com>
Cc: Borislav Petkov <bp@...en8.de>, linux-kernel@...r.kernel.org,
x86@...nel.org, linux-sgx@...r.kernel.org,
akpm@...ux-foundation.org, dave.hansen@...el.com,
nhorman@...hat.com, npmccallum@...hat.com, haitao.huang@...el.com,
andriy.shevchenko@...ux.intel.com, tglx@...utronix.de,
kai.svahn@...el.com, josh@...htriplett.org, luto@...nel.org,
kai.huang@...el.com, rientjes@...gle.com, cedric.xing@...el.com,
puiterwijk@...hat.com, Jethro Beekman <jethro@...tanix.com>
Subject: Re: [PATCH v30 08/20] x86/sgx: Add functions to allocate and free
EPC pages
On Thu, May 28, 2020 at 10:07:18PM +0300, Jarkko Sakkinen wrote:
> On Thu, May 28, 2020 at 07:16:35PM +0200, Borislav Petkov wrote:
> > Lemme reply to all mails with one. :-)
> > And except those last two. Those are allocating a page from the EPC
> > sections so I'd call them:
> >
> > sgx_try_alloc_page -> sgx_alloc_epc_page_section
> > __sgx_try_alloc_page -> __sgx_alloc_epc_page_section
> >
> > former doing the loop, latter doing the per-section list games.
>
> sgx_alloc_epc_page_section() is a bit nasty and long name to use for
> grabbing a page. And even the documentation spoke about grabbing before
> this naming discussion. I think it is a great description what is going
> on. Everytime I talk about the subject I talk about grabbing.
>
> Lets just say that your suggestion, I could not use in a conference
> talk as a verb when I describe what is going on. That function
> signature does not fit to my mouth :-) I would talk about
> grabbing a page.
"allocate an EPC page from the specified section"
It also works if/when we add NUMA awareness, e.g. sgx_alloc_epc_page_node()
means "allocate an EPC page from the specified node". Note that I'm not
inventing these from scratch, simply stealing them from alloc_pages() and
alloc_pages_node(). The section thing is unique to SGX, but the underlying
concept is the same.
> This how I refactored yesterday (is in my GIT tree already):
>
> /**
> * sgx_grab_page() - Grab a free EPC page
> * @owner: the owner of the EPC page
> * @reclaim: reclaim pages if necessary
> *
> * Iterate through EPC sections and borrow a free EPC page to the caller. When a
> * page is no longer needed it must be released with sgx_free_page(). If
> * @reclaim is set to true, directly reclaim pages when we are out of pages. No
> * mm's can be locked when @reclaim is set to true.
> *
> * Finally, wake up ksgxswapd when the number of pages goes below the watermark
> * before returning back to the caller.
> *
> * Return:
> * an EPC page,
> * -errno on error
> */
>
> I also rewrote the kdoc.
>
> I do agree that sgx_try_grab_page() should be renamed as __sgx_grab_page().
FWIW, I really, really dislike "grab". The nomenclature for normal memory
and pages uses "alloc" when taking a page off a free list, and "grab" when
elevating the refcount. I don't understand the motivation for diverging
from that. SGX is weird enough as is, using names that don't align with
exist norms will only serve to further obfuscate the code.
Powered by blists - more mailing lists