lkml.org 
[lkml]   [2008]   [Jul]   [21]   [last100]   RSS Feed
Views: [more markup]  [less markup]  [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
DateMon, 21 Jul 2008 03:36:33 -0300
From"Rafael C. de Almeida" <>
SubjectRe: kernel won't boot on a Cyrix MediaGXm (Geode )
Samuel Sieb wrote:
> I have a computer here with a CPU that the BIOS identifies as:
> Cyrix MediaGXm/Cx5530 Unicorn Revision 1.19.3B
> 
> kernel 2.6.14 identifies it as:
> vendor_id    : Geode by NSC
> cpu family    : 5
> model        : 9
> model name    : Geode(TM) Integrated Processor by National Semi
> stepping    : 1
> 
> I can't boot any kernel later than 2.6.22 on it.  Anything later either
> hangs or gives random kernel panics while booting.  I tracked down the
> problem to a specific commit:
> 
> commit f25f64ed5bd3c2932493681bdfdb483ea707da0a
> Author: Juergen Beisert <juergen@kreuzholzen.de>
> Date:   Sun Jul 22 11:12:38 2007 +0200
> 
>     x86: Replace NSC/Cyrix specific chipset access macros by inlined
> functions.
> 
> Reversing the patch (compensating for kernel changes) let me boot a
> 2.6.25 kernel.  I realize the patch is supposed to fix something that
> didn't work right, but I didn't have a problem before and I do now. :-)
> -- 
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at  http://www.tux.org/lkml/

I couldn't figure out what the problem was, but shouldn't ccr3 be
declared as u8 in the following file? After all, that's what setCx86
expects. I realise that it being u32 will do no harm here, but I thought
I should point it out.

diff --git a/arch/x86/kernel/cpu/mtrr/cyrix.c
b/arch/x86/kernel/cpu/mtrr/cyrix.c
index ff14c32..e7d9f7e 100644
--- a/arch/x86/kernel/cpu/mtrr/cyrix.c
+++ b/arch/x86/kernel/cpu/mtrr/cyrix.c
@@ -123,7 +123,7 @@ cyrix_get_free_region(unsigned long base, unsigned
long size, int replace_reg)
 }

 static u32 cr4 = 0;
-static u32 ccr3;
+static u8 ccr3;

 static void prepare_set(void)
 {

\
 
 \ /
  Last update: 2008-07-21 08:39    [from the cache]
©2003-2008