2021-02-01 13:31:38

by Tianjia Zhang

[permalink] [raw]
Subject: [PATCH v4 3/5] x86/sgx: Optimize the free_cnt count in sgx_epc_section

'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 <[email protected]>
Reviewed-by: Sean Christopherson <[email protected]>
---
arch/x86/kernel/cpu/sgx/main.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/x86/kernel/cpu/sgx/main.c b/arch/x86/kernel/cpu/sgx/main.c
index 4465912174fd..e455ec7b3449 100644
--- a/arch/x86/kernel/cpu/sgx/main.c
+++ b/arch/x86/kernel/cpu/sgx/main.c
@@ -48,6 +48,7 @@ static void sgx_sanitize_section(struct sgx_epc_section *section)
if (!ret) {
spin_lock(&section->lock);
list_move(&page->list, &section->page_list);
+ section->free_cnt++;
spin_unlock(&section->lock);
} else
list_move_tail(&page->list, &dirty);
@@ -643,7 +644,6 @@ static bool __init sgx_setup_epc_section(u64 phys_addr, u64 size,
list_add_tail(&section->pages[i].list, &section->init_laundry_list);
}

- section->free_cnt = nr_pages;
return true;
}

--
2.19.1.3.ge56e4f7


2021-02-03 00:53:35

by Jarkko Sakkinen

[permalink] [raw]
Subject: Re: [PATCH v4 3/5] x86/sgx: Optimize the free_cnt count in sgx_epc_section

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 <[email protected]>
> Reviewed-by: Sean Christopherson <[email protected]>

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/[email protected]/

/Jarkko

2021-02-11 06:08:00

by Tianjia Zhang

[permalink] [raw]
Subject: Re: [PATCH v4 3/5] x86/sgx: Optimize the free_cnt count in sgx_epc_section



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 <[email protected]>
>> Reviewed-by: Sean Christopherson <[email protected]>
>
> 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/[email protected]/
>
> /Jarkko
>

Sorry for the late reply, I already responded in the original email.

Best regards,
Tianjia