Commit 6135a028 authored by Dave Jones's avatar Dave Jones

[PATCH] Elan BIOS quirk workaround.

Marc Singer noticed some BIOSen on the AMD Elan
alias the cpu frequency registers in a place that some
drivers probe during bootup. Result - changed CPU speed
after booting.

The fix is to unmap the alias.

Marc put a patch forward for 2.2, this one is cooked up
by me, but is currently untested but functionally equivalent.
parent 782bc7e1
...@@ -42,6 +42,21 @@ static void __init init_amd(struct cpuinfo_x86 *c) ...@@ -42,6 +42,21 @@ static void __init init_amd(struct cpuinfo_x86 *c)
switch(c->x86) switch(c->x86)
{ {
case 4:
/*
* General Systems BIOSen alias the cpu frequency registers
* of the Elan at 0x000df000. Unfortuantly, one of the Linux
* drivers subsequently pokes it, and changes the CPU speed.
* Workaround : Remove the unneeded alias.
*/
#define CBAR (0xfffc) /* Configuration Base Address (32-bit) */
#define CBAR_ENB (0x80000000)
#define CBAR_KEY (0X000000CB)
if (c->x86_model==9 || c->x86_model == 10) {
if (inl (CBAR) & CBAR_ENB)
outl (0 | CBAR_KEY, CBAR);
}
case 5: case 5:
if( c->x86_model < 6 ) if( c->x86_model < 6 )
{ {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment