Re: kernel won't boot on a Cyrix MediaGXm (Geode )

From: Juergen Beisert
Date: Tue Jul 22 2008 - 04:08:52 EST


Samuel,

On Dienstag, 22. Juli 2008, Samuel Sieb wrote:
> Juergen Beisert wrote:
> > On Montag, 21. Juli 2008, Samuel Sieb wrote:
> >> I have a computer here with a CPU that the BIOS identifies as:
> >> Cyrix MediaGXm/Cx5530 Unicorn Revision 1.19.3B
> >>
> >> 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
> >
> > Yes. My patch makes some chipset tweaks working as expected. Or at least
> > it makes them work. It seems nobody ever tested them before. Remove the
> > following line (or change it to meet your CPU clock frequency):
>
> This system is kind of an embedded one and it's been working fine, so I
> haven't bothered upgrading the OS for a long time. Once I get this
> working I will be keeping it more up to date.
>
> > linux-2.6.25/arch/x86/kernel/cyrix.c, line 151. Disable this line or
> > change the value 0x04 according to the speed of your CPU. This tweak
> > helps others with random hangs of their system.
>
> I tried various values and various combinations of commenting out lines
> and the only one that worked for me was to comment out the PCR1 line
> just above it. With that line commented out (or both of them), it
> boots.

Hmm, then your BIOS does know more about your hardware than the kernel. ;-)
The PCR1 line enables the incrementor. If disabled the value in PCR0 doesn't
matter.

> I do get a message about the TSC clocksource being unstable,
> which is a new feature as well.

Its the "stop the clock if the CPU runs into a halt instruction" feature.
Saves power and keeps your CPU cold. Side effect: It also stops the TSC, while
the CPU is idle.
You can disable this feature by commenting out the line Ingo mentioned. In the
case one of these bits was set by your BIOS, your can also revert it:

setCx86(CX86_CCR2, getCx86(CX86_CCR2) & ~0x88);

This will prevent your CPU from stopping its clock and the TSC should be
stable. But: It will also disable the clockfrequency driver from work.

Juergen

--
Dipl.-Ing. Juergen Beisert | http://www.pengutronix.de
 Pengutronix - Linux Solutions for Science and Industry
  Handelsregister: Amtsgericht Hildesheim, HRA 2686
      Vertretung Sued/Muenchen, Germany
Phone: +49-8766-939 228 | Fax: +49-5121-206917-9
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/