[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 2/2] x86: Replace this_cpu_sp0 with current_top_of_stack and fix it on x86_32
On Mar 26, 2015 6:32 AM, "Boris Ostrovsky" <boris.ostrovsky@xxxxxxxxxx> wrote: > > On 03/06/2015 08:50 PM, Andy Lutomirski wrote: >> >> I broke 32-bit kernels. The implementation of sp0 was correct as >> far as I can tell, but sp0 was much weirder on x86_32 than I >> realized. It has the following issues: >> >> - Init's sp0 is inconsistent with everything else's: non-init tasks >> are offset by 8 bytes. (I have no idea why, and the comment is >> unhelpful.) >> >> - vm86 does crazy things to sp0. >> >> Fix it up by replacing this_cpu_sp0() with current_top_of_stack() >> and using a new percpu variable to track the top of the stack on >> x86_32. >> >> Fixes: 75182b1632a8 x86/asm/entry: Switch all C consumers of kernel_stack to >> this_cpu_sp0() >> Signed-off-by: Andy Lutomirski <luto@xxxxxxxxxxxxxx> >> --- > > > ... > > >> diff --git a/arch/x86/kernel/smpboot.c b/arch/x86/kernel/smpboot.c >> index febc6aabc72e..759388c538cf 100644 >> --- a/arch/x86/kernel/smpboot.c >> +++ b/arch/x86/kernel/smpboot.c >> @@ -806,6 +806,8 @@ static int do_boot_cpu(int apicid, int cpu, struct >> task_struct *idle) >> #ifdef CONFIG_X86_32 >> /* Stack for startup_32 can be just as for start_secondary onwards */ >> irq_ctx_init(cpu); >> + per_cpu(cpu_current_top_of_stack, cpu) = >> + (unsigned long)task_stack_page(idle) + THREAD_SIZE; >> #else >> clear_tsk_thread_flag(idle, TIF_FORK); >> initial_gs = per_cpu_offset(cpu); > > > > Andy, > > We need a similar change for Xen, otherwise 32-bit PV guests are not happy. > Is the patch above final (and then should I submit a separate patch) or are > you still working on it (and if so, please add the change below)? > My patch is final -- it's been in -tip for a while now. It would be really nice if we could merge the bits of Xen and native initialization that are identical rather than needing to duplicate all this code. --Andy _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |