* Andy Lutomirski <l...@kernel.org> wrote: > load_sp0() had an odd signature: > > void load_sp0(struct tss_struct *tss, struct thread_struct *thread); > > Simplify it to: > > void load_sp0(unsigned long sp0);
I also added this to the changelog: > Also simplify a few get_cpu()/put_cpu() sequences to > preempt_disable()/preempt_enable(). Plus: > --- a/arch/x86/kernel/cpu/common.c > +++ b/arch/x86/kernel/cpu/common.c > @@ -1572,7 +1572,7 @@ void cpu_init(void) > initialize_tlbstate_and_flush(); > enter_lazy_tlb(&init_mm, me); > > - load_sp0(t, ¤t->thread); > + load_sp0(current->thread.sp0); > set_tss_desc(cpu, t); > load_TR_desc(); > load_mm_ldt(&init_mm); > @@ -1627,7 +1627,7 @@ void cpu_init(void) > initialize_tlbstate_and_flush(); > enter_lazy_tlb(&init_mm, curr); > > - load_sp0(t, thread); > + load_sp0(thread->sp0); > set_tss_desc(cpu, t); > load_TR_desc(); > load_mm_ldt(&init_mm); In the 32-bit path this was the last use of 'thread', making the local variable unused - I removed it. Just curious: did you build/boot-test 32-bit kernels, or should we consider it mostly untested? Thanks, Ingo