The following commit has been merged in the linux branch: commit ae1b22f6e46c03cede7cea234d0bf2253b4261cf Author: Rusty Russell rusty@rustcorp.com.au Date: Mon Oct 26 14:26:04 2009 +1030
x86: Side-step lguest problem by only building cmpxchg8b_emu for pre-Pentium
Commit 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 Acked-by: H. Peter Anvin hpa@zytor.com Cc: lguest@ozlabs.org Cc: Arjan van de Ven arjan@infradead.org Cc: Jeremy Fitzhardinge jeremy@goop.org Cc: Linus Torvalds torvalds@linux-foundation.org LKML-Reference: 200910261426.05769.rusty@rustcorp.com.au Signed-off-by: Ingo Molnar mingo@elte.hu
diff --git a/arch/x86/Kconfig.cpu b/arch/x86/Kconfig.cpu index f2824fb..2649840 100644 --- 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.