Message ID | 20210201132653.35690-1-tianjia.zhang@linux.alibaba.com |
---|---|
Headers | show |
Series | Some optimizations related to sgx | expand |
On Mon, Feb 01, 2021 at 09:26:51PM +0800, Tianjia Zhang wrote: > 'section->free_cnt' represents the free page in sgx_epc_section, > which is assigned once after initialization. In fact, just after the > initialization is completed, the pages are in the init_laundry_list > list and cannot be allocated. This needs to be recovered by EREMOVE > of function sgx_sanitize_section() before it can be used as a page > that can be allocated. The sgx_sanitize_section() will be called in > the kernel thread ksgxd. > > This patch moves the initialization of 'section->free_cnt' from the > initialization function sgx_setup_epc_section() to the function > sgx_sanitize_section(), and then accumulates the count after the > successful execution of EREMOVE. This seems to be more reasonable, > free_cnt will also truly reflect the allocatable free pages in EPC. > > Sined-off-by: Tianjia Zhang <tianjia.zhang@linux.alibaba.com> > Reviewed-by: Sean Christopherson <seanjc@google.com> I just copy-paste my earlier response to save time sice you seem to save time by ignoring it and spamming with the same obviously illegit patch. https://lore.kernel.org/linux-sgx/YBGlodsOaX4cWAtl@kernel.org/ /Jarkko
On Mon, Feb 01, 2021 at 09:26:49PM +0800, Tianjia Zhang wrote: > Simplify the sgx code implemntation by using library function > getauxval() instead of a custom function to get the base address > of vDSO. > > Signed-off-by: Tianjia Zhang <tianjia.zhang@linux.alibaba.com> Reviewed-by: Jarkko Sakkinen <jarkko@kernel.org> This needs also ack from Shuah. /Jarkko > --- > tools/testing/selftests/sgx/main.c | 24 ++++-------------------- > 1 file changed, 4 insertions(+), 20 deletions(-) > > diff --git a/tools/testing/selftests/sgx/main.c b/tools/testing/selftests/sgx/main.c > index 724cec700926..5167505fbb46 100644 > --- a/tools/testing/selftests/sgx/main.c > +++ b/tools/testing/selftests/sgx/main.c > @@ -15,6 +15,7 @@ > #include <sys/stat.h> > #include <sys/time.h> > #include <sys/types.h> > +#include <sys/auxv.h> > #include "defines.h" > #include "main.h" > #include "../kselftest.h" > @@ -28,24 +29,6 @@ struct vdso_symtab { > Elf64_Word *elf_hashtab; > }; > > -static void *vdso_get_base_addr(char *envp[]) > -{ > - Elf64_auxv_t *auxv; > - int i; > - > - for (i = 0; envp[i]; i++) > - ; > - > - auxv = (Elf64_auxv_t *)&envp[i + 1]; > - > - for (i = 0; auxv[i].a_type != AT_NULL; i++) { > - if (auxv[i].a_type == AT_SYSINFO_EHDR) > - return (void *)auxv[i].a_un.a_val; > - } > - > - return NULL; > -} > - > static Elf64_Dyn *vdso_get_dyntab(void *addr) > { > Elf64_Ehdr *ehdr = addr; > @@ -162,7 +145,7 @@ static int user_handler(long rdi, long rsi, long rdx, long ursp, long r8, long r > return 0; > } > > -int main(int argc, char *argv[], char *envp[]) > +int main(int argc, char *argv[]) > { > struct sgx_enclave_run run; > struct vdso_symtab symtab; > @@ -203,7 +186,8 @@ int main(int argc, char *argv[], char *envp[]) > memset(&run, 0, sizeof(run)); > run.tcs = encl.encl_base; > > - addr = vdso_get_base_addr(envp); > + /* Get vDSO base address */ > + addr = (void *)getauxval(AT_SYSINFO_EHDR); > if (!addr) > goto err; > > -- > 2.19.1.3.ge56e4f7 > >
On Mon, Feb 01, 2021 at 09:26:53PM +0800, Tianjia Zhang wrote: > In this scenario, there is no case where va_page is NULL, and > the error has been checked. The if condition statement here is if-condition, i.e. dash missing > redundant, so remove the condition detection. > > Signed-off-by: Tianjia Zhang <tianjia.zhang@linux.alibaba.com> > --- > arch/x86/kernel/cpu/sgx/ioctl.c | 7 ++++--- > 1 file changed, 4 insertions(+), 3 deletions(-) > > diff --git a/arch/x86/kernel/cpu/sgx/ioctl.c b/arch/x86/kernel/cpu/sgx/ioctl.c > index 1c6ecf9fbeff..719c21cca569 100644 > --- a/arch/x86/kernel/cpu/sgx/ioctl.c > +++ b/arch/x86/kernel/cpu/sgx/ioctl.c > @@ -66,9 +66,10 @@ static int sgx_encl_create(struct sgx_encl *encl, struct sgx_secs *secs) > va_page = sgx_encl_grow(encl); > if (IS_ERR(va_page)) > return PTR_ERR(va_page); > - else if (va_page) > - list_add(&va_page->list, &encl->va_pages); > - /* else the tail page of the VA page list had free slots. */ > + if (!va_page) > + return -EIO; > + > + list_add(&va_page->list, &encl->va_pages); > > /* The extra page goes to SECS. */ > encl_size = secs->size + PAGE_SIZE; > -- > 2.19.1.3.ge56e4f7 > > Acked-by: Jarkko Sakkinen <jarkko@kernel.org> /Jarkko
On 2/2/21 3:02 PM, Jarkko Sakkinen wrote: > On Mon, Feb 01, 2021 at 09:26:49PM +0800, Tianjia Zhang wrote: >> Simplify the sgx code implemntation by using library function >> getauxval() instead of a custom function to get the base address >> of vDSO. >> >> Signed-off-by: Tianjia Zhang <tianjia.zhang@linux.alibaba.com> > > Reviewed-by: Jarkko Sakkinen <jarkko@kernel.org> > > This needs also ack from Shuah. > Looks good to me. Thank you. Acked-by: Shuah Khan <skhan@linuxfoundation.org> thanks, -- Shuah
On 2/3/21 5:54 AM, Jarkko Sakkinen wrote: > On Mon, Feb 01, 2021 at 09:26:51PM +0800, Tianjia Zhang wrote: >> 'section->free_cnt' represents the free page in sgx_epc_section, >> which is assigned once after initialization. In fact, just after the >> initialization is completed, the pages are in the init_laundry_list >> list and cannot be allocated. This needs to be recovered by EREMOVE >> of function sgx_sanitize_section() before it can be used as a page >> that can be allocated. The sgx_sanitize_section() will be called in >> the kernel thread ksgxd. >> >> This patch moves the initialization of 'section->free_cnt' from the >> initialization function sgx_setup_epc_section() to the function >> sgx_sanitize_section(), and then accumulates the count after the >> successful execution of EREMOVE. This seems to be more reasonable, >> free_cnt will also truly reflect the allocatable free pages in EPC. >> >> Sined-off-by: Tianjia Zhang <tianjia.zhang@linux.alibaba.com> >> Reviewed-by: Sean Christopherson <seanjc@google.com> > > I just copy-paste my earlier response to save time sice you seem > to save time by ignoring it and spamming with the same obviously > illegit patch. > > https://lore.kernel.org/linux-sgx/YBGlodsOaX4cWAtl@kernel.org/ > > /Jarkko > Sorry for the late reply, I already responded in the original email. Best regards, Tianjia
On 2/3/21 6:04 AM, Jarkko Sakkinen wrote: > On Mon, Feb 01, 2021 at 09:26:53PM +0800, Tianjia Zhang wrote: >> In this scenario, there is no case where va_page is NULL, and >> the error has been checked. The if condition statement here is > > if-condition, i.e. dash missing > Will do in the next patch. Thanks, Tianjia >> redundant, so remove the condition detection. >> >> Signed-off-by: Tianjia Zhang <tianjia.zhang@linux.alibaba.com> >> --- >> arch/x86/kernel/cpu/sgx/ioctl.c | 7 ++++--- >> 1 file changed, 4 insertions(+), 3 deletions(-) >> >> diff --git a/arch/x86/kernel/cpu/sgx/ioctl.c b/arch/x86/kernel/cpu/sgx/ioctl.c >> index 1c6ecf9fbeff..719c21cca569 100644 >> --- a/arch/x86/kernel/cpu/sgx/ioctl.c >> +++ b/arch/x86/kernel/cpu/sgx/ioctl.c >> @@ -66,9 +66,10 @@ static int sgx_encl_create(struct sgx_encl *encl, struct sgx_secs *secs) >> va_page = sgx_encl_grow(encl); >> if (IS_ERR(va_page)) >> return PTR_ERR(va_page); >> - else if (va_page) >> - list_add(&va_page->list, &encl->va_pages); >> - /* else the tail page of the VA page list had free slots. */ >> + if (!va_page) >> + return -EIO; >> + >> + list_add(&va_page->list, &encl->va_pages); >> >> /* The extra page goes to SECS. */ >> encl_size = secs->size + PAGE_SIZE; >> -- >> 2.19.1.3.ge56e4f7 >> >> > > Acked-by: Jarkko Sakkinen <jarkko@kernel.org> > > /Jarkko >
On Mon, Feb 08, 2021 at 05:09:21PM -0700, Shuah Khan wrote: > On 2/2/21 3:02 PM, Jarkko Sakkinen wrote: > > On Mon, Feb 01, 2021 at 09:26:49PM +0800, Tianjia Zhang wrote: > > > Simplify the sgx code implemntation by using library function > > > getauxval() instead of a custom function to get the base address > > > of vDSO. > > > > > > Signed-off-by: Tianjia Zhang <tianjia.zhang@linux.alibaba.com> > > > > Reviewed-by: Jarkko Sakkinen <jarkko@kernel.org> > > > > This needs also ack from Shuah. > > > > Looks good to me. Thank you. > > Acked-by: Shuah Khan <skhan@linuxfoundation.org> > > thanks, > -- Shuah Thank you. /Jarkko