MTRR errors

Trying to track down the source of system crash when in a certain full screen OpenGL game, I found this in dmesg:

[drm] MTRR allocation failed.  Graphics performance may suffer.

Googling this error showed a possible fix - correcting the MTRR entries in /proc/mtrr.

cat /proc/mtrr
reg00: base=0x000000000 (    0MB), size= 4096MB, count=1: write-back
reg01: base=0x0bdd00000 ( 3037MB), size=    1MB, count=1: write-through
reg02: base=0x0bde00000 ( 3038MB), size=    2MB, count=1: uncachable
reg03: base=0x0be000000 ( 3040MB), size=   32MB, count=1: uncachable
reg04: base=0x0c0000000 ( 3072MB), size= 1024MB, count=1: uncachable
reg05: base=0x100000000 ( 4096MB), size= 1024MB, count=1: write-back
reg06: base=0x13c000000 ( 5056MB), size=   64MB, count=1: uncachable

These appear to be wrong, as my mobo is Intel DG45FC with 256mb as video ram.

lspci -v
00:02.0 VGA compatible controller: Intel Corporation 4 Series Chipset Integrated Graphics Controller (rev 03) (prog-if 00 [VGA controller])
        Subsystem: Intel Corporation Device 5003
        Flags: bus master, fast devsel, latency 0, IRQ 24
        Memory at d0000000 (64-bit, non-prefetchable) [size=4]
        Memory at c0000000 (64-bit, prefetchable) [size=256]
        I/O ports at f1c0 [size=8]
        Expansion ROM at <unassigned> [disabled]
        Capabilities: [90] MSI: Enable+ Count=1/1 Maskable- 64bit-
        Capabilities: [d0] Power Management version 2
        Kernel driver in use: i915

The fix is described in the file mtrr.txt which is shipped with the kernel, in my case:

echo "base=0xc0000000 size=0x10000000 type=write-combining" >| /proc/mtrr

But when I do this, I get a bash error:

bash: echo: write error: Invalid argument

Is there some special Suse way of doing this or something?

I am thinking I would try a new kernel in your setup. There is a script file called SAKC that can help update/compile a new kernel while keeping your old one and the Intel Graphic support is said to be better in the latest kernel 2.6.37, though I don’t use Intel graphics myself. In order to prepare to compile a kernel, you should open YaST / Software Repositories, select View → Patterns and then check or enable Base Development, C++ Development and Kernel Development and let all of this install.Then visit my thread on SAKC here:

S.A.K.C. - SUSE Automated Kernel Compiler - Version 2.00

Message #17 shows the most recent version of SAKC. And message #22 shows a companion file I called KLIST to help manage your kernel compiles and installs. I started a thread on the latest kernel 2.6.37 here:

Kernel 2.6.37 was release Today (1-5-2011)

Let me know if you have any questions about these scripts.

Thank You,

What version/release of openSUSE? Kernel version? DE type if relevant?

I’d prefer to do that only if I knew that MTRR errors were better handled in the new kernel. I’ll take a look at the release notes etc for this kernel and see what it says about the subject.
I was hoping someone would be able to spot what’s wrong with the command I used:

echo “base=0xc0000000 size=0x10000000 type=write-combining” >| /proc/mtrr

and/or tell me why it doesn’t work on Suse _64.

Suse 11.3, kernel, KDE 4.4.4

For the record, Kernel 2.6.37 made no difference at all - dmesg still reports MTRR allocation failed, and

echo "base=0xc0000000 size=0x10000000 type=write-combining" >| /proc/mtrr 


bash: echo: write error: Invalid argument