8.1. Setting up MTRR
Prev | Chapter 8. Video output devices | Next

## 8.1. Setting up MTRR

It is VERY recommended to check if the MTRR registers are set up properly, because they can give a big performance boost.

Do a cat /proc/mtrr:

    --($:~)-- cat /proc/mtrr
    reg00: base=0xe4000000 (3648MB), size=  16MB: write-combining, count=9
    reg01: base=0xd8000000 (3456MB), size= 128MB: write-combining, count=1

It's right, shows my Matrox G400 with 16MB memory. I did this from XFree 4.x.x, which sets up MTRR registers automatically.

If nothing worked, you have to do it manually. First, you have to find the base address. You have 3 ways to find it:

1. from X11 startup messages, for example:

       (--) SVGA: PCI: Matrox MGA G400 AGP rev 4, Memory @ 0xd8000000, 0xd4000000
       (--) SVGA: Linear framebuffer at 0xD8000000

2. from `/proc/pci` (use lspci -v command):

       01:00.0 VGA compatible controller: Matrox Graphics, Inc.: Unknown device 0525
       Memory at d8000000 (32-bit, prefetchable)

3. from mga_vid kernel driver messages (use dmesg):

       mga_mem_base = d8000000

Then let's find the memory size. This is very easy, just convert video RAM size to hexadecimal, or use this table:

1 MB | 0x100000
2 MB | 0x200000
4 MB | 0x400000
8 MB | 0x800000
16 MB | 0x1000000
32 MB | 0x2000000

You know base address and memory size, let's setup MTRR registers! For example, for the Matrox card above (`base=0xd8000000`) with 32MB ram (`size=0x2000000`) just execute:

    echo "base=0xd8000000 size=0x2000000 type=write-combining" > /proc/mtrr

Not all CPUs have MTRRs. For example older K6-2 (around 266MHz, stepping 0) CPUs don't have MTRRs, but stepping 12 does (execute cat /proc/cpuinfo to check it).

Prev | Up | Next
Chapter 8. Video output devices | Home | 8.2. Xv