Skip to contentSkip to conversation

2.2.16 SMP: mtrr errors

DISCUSSION Petr Vandrovec 6 participants 7 messages Dec 12, 2000 – Dec 13, 2000

lore
Share & tools
lore
#0 lore raw
Quoted 2 lines · Paul C. Nendick

-Matrox g450 32MB RAM dual-heal AGP video card w/ hand compiled X driver
from matrox

Make sure you do not use either matroxfb or XFree's driver... Same chip ID, but different ramdac :-(

Quoted 4 lines

and immediately after starting X:

kernel: mtrr: base(0xd4000000) is not aligned on a size(0x1800000) boundary last message repeated 2 times

For some strange reason X thinks that you have 24MB of memory on the G450. You can either create 32MB write-combining region at 0xd4000000, or teach X that your device occupies 32MB and not 24 (you should do it anyway, region size can be only power of two)...

Quoted 6 lines

and finally:

%cat /proc/mtrr
reg00: base=0x00000000 ( 0MB), size= 256MB: write-back, count=1
reg01: base=0xd0000000 (3328MB), size= 64MB: write-combining, count=1
reg02: base=0xd5800000 (3416MB), size= 8MB: write-combining, count=1

+ reg03: base=0xd4000000 (????MB), size= 32MB: write-combining, count=1

Petr Vandrovec [email protected]

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected]
Please read the FAQ at http://www.tux.org/lkml/

#1 lore raw
Quoted 7 lines · Petr Vandrovec
Quoted 2 lines

kernel: mtrr: base(0xd4000000) is not aligned on a size(0x1800000) boundary last message repeated 2 times

For some strange reason X thinks that you have 24MB of memory on the G450. You can either create 32MB write-combining region at 0xd4000000, or teach X that your device occupies 32MB and not 24 (you should do it anyway, region size can be only power of two)...

Petr, the Matrox card splits the memory between the two video screens when running in a multi-head configuration and "pretends" that it is two distinct cards. Thus, a 32 mb card will register an mtrr for 24mb and for 8mb seperately when in this mode.

At line 1190 in arch/i386/kernel/mtrr.c the switch on Intel falls through hitting the error message for Centaur. I know the comment says to fall through, but is this correct? I've inserted a break at the end of the Intel switch before and have not had problems, but I left it out in the latest couple of kernels because of all the mtrr work being done, waiting to see if there was resolution.

John
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected]
Please read the FAQ at http://www.tux.org/lkml/

#2 lore raw
Quoted 4 lines

Petr, the Matrox card splits the memory between the two video screens when running in a multi-head configuration and "pretends" that it is two distinct cards. Thus, a 32 mb card will register an mtrr for 24mb and for 8mb seperately when in this mode.

That is a driver bug. The intel processors only support MTRR's on certain power boundaries/sizes. The fall through is intended.

Quoted 2 lines

to fall through, but is this correct? I've inserted a break at the end of the Intel switch before and have not had problems, but I left it out

Lucky

Quoted 2 lines

in the latest couple of kernels because of all the mtrr work being done, waiting to see if there was resolution.

The Matrox driver needs to register a single 32Mb MTRR

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected]
Please read the FAQ at http://www.tux.org/lkml/

#3 lore raw
Quoted 4 lines · Alan Cox
Quoted 2 lines

to fall through, but is this correct? I've inserted a break at the end of the Intel switch before and have not had problems, but I left it out

Lucky

Wouldn't be the first time...
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected]
Please read the FAQ at http://www.tux.org/lkml/

#4 lore raw
In reply to John Cavan

Shall I submit this to Matrox as a bug then?

/paul

Quoted 18 lines · Alan Cox
Quoted 4 lines

Petr, the Matrox card splits the memory between the two video screens when running in a multi-head configuration and "pretends" that it is two distinct cards. Thus, a 32 mb card will register an mtrr for 24mb and for 8mb seperately when in this mode.

That is a driver bug. The intel processors only support MTRR's on certain power boundaries/sizes. The fall through is intended.

Quoted 2 lines

to fall through, but is this correct? I've inserted a break at the end of the Intel switch before and have not had problems, but I left it out

Lucky

Quoted 2 lines

in the latest couple of kernels because of all the mtrr work being done, waiting to see if there was resolution.

The Matrox driver needs to register a single 32Mb MTRR

Signature · 5 lines
Paul C. Nendick
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
Please read the FAQ at http://www.tux.org/lkml/
#5 lore raw
In reply to John Cavan
Quoted 1 line · Paul C. Nendick

Shall I submit this to Matrox as a bug then?

The "bug" is in the XFree86 core, so telling Matrox might not do a lot of good.

The driver code just says "I want to map a framebuffer of this size at this physical address" (or actually "with these PCI details"), and the core code arranges the mapping, doing the MTRR stuff while it's at it.

David Wragg

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected]
Please read the FAQ at http://www.tux.org/lkml/

#6 lore raw
In reply to John Cavan
Quoted 5 lines · Alan Cox
Quoted 4 lines

Petr, the Matrox card splits the memory between the two video screens when running in a multi-head configuration and "pretends" that it is two distinct cards. Thus, a 32 mb card will register an mtrr for 24mb and for 8mb seperately when in this mode.

Quoted 7 lines

That is a driver bug. The intel processors only support MTRR's on certain power boundaries/sizes. The fall through is intended.

Quoted 2 lines

in the latest couple of kernels because of all the mtrr work being done, waiting to see if there was resolution.

The Matrox driver needs to register a single 32Mb MTRR

The kernel VESA framebuffer has exactly the same problem. Sometimes VESA reports 2.5Mb video memory, and vesafb's attempt to register an MTRR fails.

But should vesafb know about Intel-specific MTRR limitations, given that those limitations may change?

-- Jamie
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected]
Please read the FAQ at http://www.tux.org/lkml/