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