lkml.org 
[lkml]   [2010]   [Mar]   [14]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
Subject[Lguest] 2.6.33 guest crash (was: Re: 2.6.32-rc5 guest crash)
On Mon, Oct 26, 2009 at 02:26:04PM +1030, Rusty Russell wrote:
> On Mon, 26 Oct 2009 04:25:21 am Johannes Stezenbach wrote:
> >
> > I'm using linux-2.6.32-rc5-81-g964fe08 as both host and guest,
> > and the guest crashes on boot:
> >
> > Calibrating delay loop...
> > general protection fault: 0000 [#1] PREEMPT SMP
> > last sysfs file:
> > Modules linked in:
> >
> > Pid: 0, comm: swapper Not tainted (2.6.32-rc5 #1)
> > EIP: 0061:[<c11f915d>] EFLAGS: 00010046 CPU: 0
> > EIP is at cmpxchg8b_emu+0x1/0x12

I recently installed 2.6.33 and now the error which was
fixed in 2.6.32 is back since the fix got reverted in
db677ffa5f5a4f15b9dad4d132b3477b80766d82

What now?

Am I correct to assume that I can avoid the issue
by switching to a 64bit kernel (on host + guest)?


> OK, it's the non-paravirt "cli" we're breaking on (the pushfl is bad too).
>
> This is because alternatives haven't been subbed yet. The Right Thing is to
> make this asm code paravirt aware. The Easy Thing is to fix this code to
> only get included when we're actually compiling for a 386 or 486 (this was
> introduced with the original pentium AFAICT).
>
> How's this Ingo, Arjan?
>
> Subject: x86: sidestep lguest problem by only building cmpxchg8b_emu for pre-Pentium
>
> Arjen's 79e1dd05d1a22 "x86: Provide an alternative() based cmpxchg64()" broke
> lguest, even on systems which have cmpxchg8b support. The emulation code
> gets used until alternatives get run, but it contains native instructions,
> not their paravirt alternatives.
>
> The simplest fix is to turn this code off except for 386 and 486 builds.
>
> Reported-by: Johannes Stezenbach <js@sig21.net>
> Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
>
> diff --git a/arch/x86/Kconfig.cpu b/arch/x86/Kconfig.cpu
> --- a/arch/x86/Kconfig.cpu
> +++ b/arch/x86/Kconfig.cpu
> @@ -400,7 +400,7 @@ config X86_TSC
>
> config X86_CMPXCHG64
> def_bool y
> - depends on X86_PAE || X86_64 || MCORE2 || MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || MATOM
> + depends on !M386 && !M486
>
> # this should be set for all -march=.. options where the compiler
> # generates cmov.
>
>
>
>

Thanks
Johannes


\
 
 \ /
  Last update: 2010-03-14 18:35    [W:0.069 / U:0.216 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site