On Thu, Jan 28, 2021 at 12:32:18AM +0800, Lai Jiangshan wrote:
> From: Lai Jiangshan <la...@linux.alibaba.com>
> 
> TSS_entry2task_stack is used to refer to tss.sp1 which is stored the value
> of thread.sp0.

"... which is a copy of thread.sp0."

> 
> At the code where TSS_entry2task_stack is used in SWITCH_TO_KERNEL_STACK,

"TSS_entry2task_stack is used in SWITCH_TO_KERNEL_STACK and CR3 is
already... "

> the CR3 is already kernel CR3 and kernel segments is loaded.
> 
> So we can directly use the percpu to get tss.sp1(thread.sp0) instead of

Who's "we"?

> the complex offset-calculation.
> 
> Signed-off-by: Lai Jiangshan <la...@linux.alibaba.com>
> ---
>  arch/x86/entry/entry_32.S | 9 ++-------
>  1 file changed, 2 insertions(+), 7 deletions(-)
> 
> diff --git a/arch/x86/entry/entry_32.S b/arch/x86/entry/entry_32.S
> index df8c017e6161..3b4d1a63d1f0 100644
> --- a/arch/x86/entry/entry_32.S
> +++ b/arch/x86/entry/entry_32.S
> @@ -465,16 +465,11 @@
>       cmpl    $SIZEOF_entry_stack, %ecx
>       jae     .Lend_\@
>  
> -     /* Load stack pointer into %esi and %edi */
> +     /* Load stack pointer into %esi */
>       movl    %esp, %esi
> -     movl    %esi, %edi
> -
> -     /* Move %edi to the top of the entry stack */
> -     andl    $(MASK_entry_stack), %edi
> -     addl    $(SIZEOF_entry_stack), %edi
>  
>       /* Load top of task-stack into %edi */
> -     movl    TSS_entry2task_stack(%edi), %edi
> +     movl    PER_CPU_VAR(cpu_tss_rw + TSS_sp1), %edi
>  
>       /* Special case - entry from kernel mode via entry stack */
>  #ifdef CONFIG_VM86
> -- 

The change itself looks ok.

Thx.

-- 
Regards/Gruss,
    Boris.

https://people.kernel.org/tglx/notes-about-netiquette

Reply via email to