From: Andi Kleen <ak@suse.de>
To: Dave Jones <davej@redhat.com>
Cc: Christian <haveaniceday@cv-sv.de>, linux-kernel@vger.kernel.org
Subject: Re: 2.6.22-rc1 does not boot on VIA C3_2 cause of X86_CMPXCHG64 II
Date: Sat, 19 May 2007 07:53:16 +0200 [thread overview]
Message-ID: <200705190753.16570.ak@suse.de> (raw)
In-Reply-To: <20070517004209.GE16810@redhat.com>
On Thursday 17 May 2007 02:42, Dave Jones wrote:
> On Thu, May 17, 2007 at 02:09:16AM +0200, Christian wrote:
> > my small VIA C3_2 box does not boot with 2.6.22-rc1.
> > It even does not uncompress the kernel.
> >
> > The configuration as M386 M486 works. But M586 + MVIAC3_2
> > does not work.
> >
> > solution for me, cahnge arch/i386/Kconfig.cpu
> >
> > --- arch/i386/Kconfig.cpu.before 2007-05-17 01:38:26.000000000 +0200
> > +++ arch/i386/Kconfig.cpu 2007-05-17 00:54:52.000000000 +0200
> > @@ -299,5 +299,5 @@
> >
> > config X86_CMPXCHG64
> > bool
> > - depends on !M386 && !M486
> > + depends on !M386 && !M486 && !MVIAC3_2
> > default y
> >
> >
> > The related #ifdef is in ./include/asm-i386/cmpxchg.h
> > May be cmpxchg8b is not supported by VIAC3_2 ?
> >
> > May be some other non Intel/AMD need to be excluded from X86_CMPXCHG64 ?
> > May be the generic option CONFIG_X86_GENERIC need to switch this off
> > also ?
>
> The C3s all have cx8, but it needs to be enabled in an MSR first.
> (See arch/i386/kernel/cpu/centaur.c , search for CX8)
>
> Did we add code that uses cmpxchg8b before identify_cpu() gets run ?
> I've not been paying attention to .22rc (busy trying to beat .21 into shape
> for F7) so I may have missed something obvious. Andi?
Can someone please test if this patch works?
This preserves the 6 <= model <= 9 logic of the C code; this means
if VIA ever brings out model >= 10 it hopefully sets this bit by default.
Dave, do you have any information to the contrary?
-Andi
Index: linux/arch/i386/kernel/verify_cpu.S
===================================================================
--- linux.orig/arch/i386/kernel/verify_cpu.S
+++ linux/arch/i386/kernel/verify_cpu.S
@@ -2,6 +2,7 @@
This runs in 16bit mode so that the caller can still use the BIOS
to output errors on the screen */
#include <asm/cpufeature.h>
+#include <asm/msr.h>
verify_cpu:
pushfl # Save caller passed flags
@@ -45,6 +46,28 @@ verify_cpu:
cmpl $0x1,%eax
jb bad # no cpuid 1
+#if REQUIRED_MASK1 & NEED_CMPXCHG64
+ /* Some VIA C3s need magic MSRs to enable CX64. Do this here */
+ cmpl $0x746e6543,%ebx # Cent
+ jne 1f
+ cmpl $0x48727561,%edx # aurH
+ jne 1f
+ cmpl $0x736c7561,%ecx # auls
+ jne 1f
+ movl $1,%eax # check model
+ cpuid
+ shr $4,%eax
+ andl $0xf,%eax # get model
+ cmpl $6,%eax
+ jb 1f
+ cmpl $9,%eax # newer vias hopefully don't require
+ ja 1f # this anymore
+ movl $MSR_VIA_FCR,%ecx
+ rdmsr
+ orl $(1|(1<<7)),%eax # enable CMPXCHG64 and PGE
+ wrmsr
+1:
+#endif
movl $0x1,%eax # Does the cpu have what it takes
cpuid
-Andi
next prev parent reply other threads:[~2007-05-19 5:54 UTC|newest]
Thread overview: 44+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-05-17 0:09 2.6.22-rc1 does not boot on VIA C3_2 cause of X86_CMPXCHG64 Christian
2007-05-17 0:42 ` Dave Jones
2007-05-17 1:15 ` H. Peter Anvin
2007-05-17 1:55 ` H. Peter Anvin
2007-05-17 1:39 ` Christian
2007-05-17 21:28 ` Christian Volkmann
2007-05-17 21:47 ` Dave Jones
2007-05-17 21:59 ` Christian Volkmann
2007-05-31 5:22 ` [RFC: 2.6 patch] i386: remove support for the Rise CPU Adrian Bunk
2007-05-31 13:31 ` Dave Jones
2007-05-31 17:37 ` Christian Volkmann
2007-05-31 17:48 ` Dave Jones
2007-05-19 10:22 ` 2.6.22-rc1 does not boot on VIA C3_2 cause of X86_CMPXCHG64 Hans de Bruin
2007-05-17 8:56 ` Alan Cox
2007-05-17 11:51 ` Andi Kleen
2007-05-17 15:02 ` Dave Jones
2007-05-17 22:14 ` H. Peter Anvin
2007-05-19 5:53 ` Andi Kleen [this message]
2007-05-19 6:02 ` 2.6.22-rc1 does not boot on VIA C3_2 cause of X86_CMPXCHG64 II Dave Jones
2007-05-19 11:47 ` Andi Kleen
2007-05-19 17:23 ` Dave Jones
2007-05-19 8:22 ` Claas Langbehn
2007-05-19 18:10 ` H. Peter Anvin
2007-05-19 11:42 ` Christian Volkmann
2007-05-19 11:54 ` Andi Kleen
2007-05-23 21:50 ` H. Peter Anvin
2007-05-19 17:26 ` Claas Langbehn
2007-05-19 20:22 ` Via C3: other flags possible ? Christian Volkmann
2007-05-19 22:36 ` Christian Volkmann
2007-05-19 22:52 ` Via C3/C7: " Simon Arlott
2007-05-20 8:19 ` Claas Langbehn
2007-05-20 13:14 ` Christian Volkmann
2007-05-20 12:59 ` Via C3: " Andi Kleen
2007-05-19 17:54 ` 2.6.22-rc1 does not boot on VIA C3_2 cause of X86_CMPXCHG64 II Claas Langbehn
2007-05-17 1:10 ` 2.6.22-rc1 does not boot on VIA C3_2 cause of X86_CMPXCHG64 Linus Torvalds
2007-05-17 1:25 ` Christian
2007-05-17 2:21 ` Linus Torvalds
2007-05-17 3:05 ` H. Peter Anvin
2007-05-17 3:16 ` Linus Torvalds
2007-05-17 4:51 ` H. Peter Anvin
2007-05-17 6:18 ` Dave Jones
2007-05-17 6:31 ` H. Peter Anvin
2007-05-17 6:17 ` Dave Jones
2007-05-17 9:22 ` Hans de Bruin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=200705190753.16570.ak@suse.de \
--to=ak@suse.de \
--cc=davej@redhat.com \
--cc=haveaniceday@cv-sv.de \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.