Re: [PATCH v13 07/13] x86/sgx: Add data structures for tracking the EPC pages

2018-09-05 Thread Jarkko Sakkinen
On Tue, Sep 04, 2018 at 11:17:35AM -0700, Sean Christopherson wrote: > On Tue, Sep 04, 2018 at 09:01:15PM +0300, Andy Shevchenko wrote: > > On Tue, Sep 4, 2018 a> +/** > > > > > > > + va = ioremap_cache(addr, size); > > > > > + if (!va) > > > > > + return -ENOMEM; > > >

Re: [PATCH v13 07/13] x86/sgx: Add data structures for tracking the EPC pages

2018-09-05 Thread Jarkko Sakkinen
On Tue, Sep 04, 2018 at 11:17:35AM -0700, Sean Christopherson wrote: > On Tue, Sep 04, 2018 at 09:01:15PM +0300, Andy Shevchenko wrote: > > On Tue, Sep 4, 2018 a> +/** > > > > > > > + va = ioremap_cache(addr, size); > > > > > + if (!va) > > > > > + return -ENOMEM; > > >

Re: [PATCH v13 07/13] x86/sgx: Add data structures for tracking the EPC pages

2018-09-04 Thread Sean Christopherson
On Tue, Sep 04, 2018 at 09:01:15PM +0300, Andy Shevchenko wrote: > On Tue, Sep 4, 2018 a> +/** > > > > > + va = ioremap_cache(addr, size); > > > > + if (!va) > > > > + return -ENOMEM; > > > > > > I'm not sure this is a right API. Do we operate with memory? Does it > > >

Re: [PATCH v13 07/13] x86/sgx: Add data structures for tracking the EPC pages

2018-09-04 Thread Sean Christopherson
On Tue, Sep 04, 2018 at 09:01:15PM +0300, Andy Shevchenko wrote: > On Tue, Sep 4, 2018 a> +/** > > > > > + va = ioremap_cache(addr, size); > > > > + if (!va) > > > > + return -ENOMEM; > > > > > > I'm not sure this is a right API. Do we operate with memory? Does it > > >

Re: [PATCH v13 07/13] x86/sgx: Add data structures for tracking the EPC pages

2018-09-04 Thread Andy Shevchenko
On Tue, Sep 4, 2018 a> +/** > > > + va = ioremap_cache(addr, size); > > > + if (!va) > > > + return -ENOMEM; > > > > I'm not sure this is a right API. Do we operate with memory? Does it > > have I/O side effects? > > If no, memremap() would be better to use. > >

Re: [PATCH v13 07/13] x86/sgx: Add data structures for tracking the EPC pages

2018-09-04 Thread Andy Shevchenko
On Tue, Sep 4, 2018 a> +/** > > > + va = ioremap_cache(addr, size); > > > + if (!va) > > > + return -ENOMEM; > > > > I'm not sure this is a right API. Do we operate with memory? Does it > > have I/O side effects? > > If no, memremap() would be better to use. > >

Re: [PATCH v13 07/13] x86/sgx: Add data structures for tracking the EPC pages

2018-09-04 Thread Sean Christopherson
On Mon, Sep 03, 2018 at 05:41:53PM +0300, Andy Shevchenko wrote: > On Mon, Aug 27, 2018 at 9:58 PM Jarkko Sakkinen > wrote: > > > + va = ioremap_cache(addr, size); > > + if (!va) > > + return -ENOMEM; > > I'm not sure this is a right API. Do we operate with memory?

Re: [PATCH v13 07/13] x86/sgx: Add data structures for tracking the EPC pages

2018-09-04 Thread Sean Christopherson
On Mon, Sep 03, 2018 at 05:41:53PM +0300, Andy Shevchenko wrote: > On Mon, Aug 27, 2018 at 9:58 PM Jarkko Sakkinen > wrote: > > > + va = ioremap_cache(addr, size); > > + if (!va) > > + return -ENOMEM; > > I'm not sure this is a right API. Do we operate with memory?

Re: [PATCH v13 07/13] x86/sgx: Add data structures for tracking the EPC pages

2018-09-04 Thread Jarkko Sakkinen
On Mon, Sep 03, 2018 at 05:41:53PM +0300, Andy Shevchenko wrote: > On Mon, Aug 27, 2018 at 9:58 PM Jarkko Sakkinen > wrote: > > > > Add data structures to track Enclave Page Cache (EPC) pages. EPC is > > divided into multiple banks (1-N) of which addresses and sizes can be > > enumerated with

Re: [PATCH v13 07/13] x86/sgx: Add data structures for tracking the EPC pages

2018-09-04 Thread Jarkko Sakkinen
On Mon, Sep 03, 2018 at 05:41:53PM +0300, Andy Shevchenko wrote: > On Mon, Aug 27, 2018 at 9:58 PM Jarkko Sakkinen > wrote: > > > > Add data structures to track Enclave Page Cache (EPC) pages. EPC is > > divided into multiple banks (1-N) of which addresses and sizes can be > > enumerated with

Re: [PATCH v13 07/13] x86/sgx: Add data structures for tracking the EPC pages

2018-09-03 Thread Andy Shevchenko
On Mon, Aug 27, 2018 at 9:58 PM Jarkko Sakkinen wrote: > > Add data structures to track Enclave Page Cache (EPC) pages. EPC is > divided into multiple banks (1-N) of which addresses and sizes can be > enumerated with CPUID by the OS. > > On NUMA systems a node can have at most bank. A bank can

Re: [PATCH v13 07/13] x86/sgx: Add data structures for tracking the EPC pages

2018-09-03 Thread Andy Shevchenko
On Mon, Aug 27, 2018 at 9:58 PM Jarkko Sakkinen wrote: > > Add data structures to track Enclave Page Cache (EPC) pages. EPC is > divided into multiple banks (1-N) of which addresses and sizes can be > enumerated with CPUID by the OS. > > On NUMA systems a node can have at most bank. A bank can

Re: [PATCH v13 07/13] x86/sgx: Add data structures for tracking the EPC pages

2018-08-31 Thread Jarkko Sakkinen
On Tue, Aug 28, 2018 at 02:34:32PM -0700, Sean Christopherson wrote: > On Tue, Aug 28, 2018 at 09:53:11AM -0700, Dave Hansen wrote: > > >>> + sgx_nr_epc_banks++; > > >>> + } > > >>> + > > >>> + if (!sgx_nr_epc_banks) { > > >>> + pr_err("There are zero EPC

Re: [PATCH v13 07/13] x86/sgx: Add data structures for tracking the EPC pages

2018-08-31 Thread Jarkko Sakkinen
On Tue, Aug 28, 2018 at 02:34:32PM -0700, Sean Christopherson wrote: > On Tue, Aug 28, 2018 at 09:53:11AM -0700, Dave Hansen wrote: > > >>> + sgx_nr_epc_banks++; > > >>> + } > > >>> + > > >>> + if (!sgx_nr_epc_banks) { > > >>> + pr_err("There are zero EPC

Re: [PATCH v13 07/13] x86/sgx: Add data structures for tracking the EPC pages

2018-08-31 Thread Jarkko Sakkinen
On Tue, Aug 28, 2018 at 09:53:11AM -0700, Dave Hansen wrote: > >>> extern bool sgx_enabled; > >>> extern bool sgx_lc_enabled; > >>> +extern struct sgx_epc_bank sgx_epc_banks[SGX_MAX_EPC_BANKS]; > >>> + > >>> +/* > >>> + * enum sgx_epc_page_desc - defines bits and masks for an EPC page's desc >

Re: [PATCH v13 07/13] x86/sgx: Add data structures for tracking the EPC pages

2018-08-31 Thread Jarkko Sakkinen
On Tue, Aug 28, 2018 at 09:53:11AM -0700, Dave Hansen wrote: > >>> extern bool sgx_enabled; > >>> extern bool sgx_lc_enabled; > >>> +extern struct sgx_epc_bank sgx_epc_banks[SGX_MAX_EPC_BANKS]; > >>> + > >>> +/* > >>> + * enum sgx_epc_page_desc - defines bits and masks for an EPC page's desc >

Re: [PATCH v13 07/13] x86/sgx: Add data structures for tracking the EPC pages

2018-08-28 Thread Sean Christopherson
On Tue, Aug 28, 2018 at 09:53:11AM -0700, Dave Hansen wrote: > >>> + sgx_nr_epc_banks++; > >>> + } > >>> + > >>> + if (!sgx_nr_epc_banks) { > >>> + pr_err("There are zero EPC banks.\n"); > >>> + return -ENODEV; > >>> + } > >>> + > >>> + return 0; > >>> +} > >> > >> Does

Re: [PATCH v13 07/13] x86/sgx: Add data structures for tracking the EPC pages

2018-08-28 Thread Sean Christopherson
On Tue, Aug 28, 2018 at 09:53:11AM -0700, Dave Hansen wrote: > >>> + sgx_nr_epc_banks++; > >>> + } > >>> + > >>> + if (!sgx_nr_epc_banks) { > >>> + pr_err("There are zero EPC banks.\n"); > >>> + return -ENODEV; > >>> + } > >>> + > >>> + return 0; > >>> +} > >> > >> Does

Re: [PATCH v13 07/13] x86/sgx: Add data structures for tracking the EPC pages

2018-08-28 Thread Dave Hansen
>>> extern bool sgx_enabled; >>> extern bool sgx_lc_enabled; >>> +extern struct sgx_epc_bank sgx_epc_banks[SGX_MAX_EPC_BANKS]; >>> + >>> +/* >>> + * enum sgx_epc_page_desc - defines bits and masks for an EPC page's desc >> >> Why are you bothering packing these bits? This seems a rather >>

Re: [PATCH v13 07/13] x86/sgx: Add data structures for tracking the EPC pages

2018-08-28 Thread Dave Hansen
>>> extern bool sgx_enabled; >>> extern bool sgx_lc_enabled; >>> +extern struct sgx_epc_bank sgx_epc_banks[SGX_MAX_EPC_BANKS]; >>> + >>> +/* >>> + * enum sgx_epc_page_desc - defines bits and masks for an EPC page's desc >> >> Why are you bothering packing these bits? This seems a rather >>

Re: [PATCH v13 07/13] x86/sgx: Add data structures for tracking the EPC pages

2018-08-28 Thread Jarkko Sakkinen
On Mon, Aug 27, 2018 at 02:07:53PM -0700, Dave Hansen wrote: > On 08/27/2018 11:53 AM, Jarkko Sakkinen wrote: > > Add data structures to track Enclave Page Cache (EPC) pages. EPC is > > divided into multiple banks (1-N) of which addresses and sizes can be > > enumerated with CPUID by the OS. > >

Re: [PATCH v13 07/13] x86/sgx: Add data structures for tracking the EPC pages

2018-08-28 Thread Jarkko Sakkinen
On Mon, Aug 27, 2018 at 02:07:53PM -0700, Dave Hansen wrote: > On 08/27/2018 11:53 AM, Jarkko Sakkinen wrote: > > Add data structures to track Enclave Page Cache (EPC) pages. EPC is > > divided into multiple banks (1-N) of which addresses and sizes can be > > enumerated with CPUID by the OS. > >

Re: [PATCH v13 07/13] x86/sgx: Add data structures for tracking the EPC pages

2018-08-27 Thread Dave Hansen
On 08/27/2018 11:53 AM, Jarkko Sakkinen wrote: > Add data structures to track Enclave Page Cache (EPC) pages. EPC is > divided into multiple banks (1-N) of which addresses and sizes can be > enumerated with CPUID by the OS. > > On NUMA systems a node can have at most bank. A bank can be at most

Re: [PATCH v13 07/13] x86/sgx: Add data structures for tracking the EPC pages

2018-08-27 Thread Dave Hansen
On 08/27/2018 11:53 AM, Jarkko Sakkinen wrote: > Add data structures to track Enclave Page Cache (EPC) pages. EPC is > divided into multiple banks (1-N) of which addresses and sizes can be > enumerated with CPUID by the OS. > > On NUMA systems a node can have at most bank. A bank can be at most

[PATCH v13 07/13] x86/sgx: Add data structures for tracking the EPC pages

2018-08-27 Thread Jarkko Sakkinen
Add data structures to track Enclave Page Cache (EPC) pages. EPC is divided into multiple banks (1-N) of which addresses and sizes can be enumerated with CPUID by the OS. On NUMA systems a node can have at most bank. A bank can be at most part of two nodes. SGX supports both nodes with a single

[PATCH v13 07/13] x86/sgx: Add data structures for tracking the EPC pages

2018-08-27 Thread Jarkko Sakkinen
Add data structures to track Enclave Page Cache (EPC) pages. EPC is divided into multiple banks (1-N) of which addresses and sizes can be enumerated with CPUID by the OS. On NUMA systems a node can have at most bank. A bank can be at most part of two nodes. SGX supports both nodes with a single