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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).