From: Christian Volkmann <haveaniceday@cv-sv.de>
To: Andi Kleen <ak@suse.de>
Cc: Dave Jones <davej@redhat.com>, 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 13:42:34 +0200 [thread overview]
Message-ID: <464EE2AA.3030607@cv-sv.de> (raw)
In-Reply-To: <200705190753.16570.ak@suse.de>
Andi Kleen wrote:
> 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
>
Hi Andi,
your patch did not work. See the correction below. The mask should contain 1<<1
instead of 1.
Model 10 is now also included.
I add also a patch for setup.S. It does not print the CPUID message in case
the CPUID is wrong, cause %ds was not set proper.
Best regards,
Christian
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 @@
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 $10,%eax # newer vias hopefully don't require
+ ja 1f # this anymore
+ movl $MSR_VIA_FCR,%ecx
+ rdmsr
+ orl $((1<<1)|(1<<7)),%eax # enable CMPXCHG64 and PGE
+ wrmsr
+1:
+#endif
movl $0x1,%eax # Does the cpu have what it takes
cpuid
Index: linux/arch/i386/boot/verify_cpu.S
===================================================================
--- linux.orig/arch/i386/boot/setup.S
+++ linux/arch/i386/boot/setup.S
@@ -310,12 +310,15 @@
call verify_cpu
testl %eax,%eax
jz cpu_ok
+ # missed before: set ds
+ pushw %cs # CPU too old or CPUID function bits are wrong.
+ popw %ds # die.
lea cpu_panic_mess,%si
call prtstr
1: jmp 1b
cpu_panic_mess:
- .asciz "PANIC: CPU too old for this kernel."
+ .asciz "PANIC: CPU too old for this kernel or CPUID function bits are wrong."
#include "../kernel/verify_cpu.S"
next prev parent reply other threads:[~2007-05-19 11:43 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 ` 2.6.22-rc1 does not boot on VIA C3_2 cause of X86_CMPXCHG64 II Andi Kleen
2007-05-19 6:02 ` 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 [this message]
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=464EE2AA.3030607@cv-sv.de \
--to=haveaniceday@cv-sv.de \
--cc=ak@suse.de \
--cc=davej@redhat.com \
--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).