8.1. Impostare gli MTRR
Indietro | Capitolo 8. Dispositivi di uscita video | Avanti

## 8.1. Impostare gli MTRR

Si consiglia vivamente di controllare che i registri MTRR siano impostati correttamente, al fine di migliorare molto le prestazioni.

Fai un 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

E' giusto, mostra la mia Matrox G400 con 16MB di memoria. L'ho fatto da XFree 4.x.x, che imposta i registri MTRR automaticamente.

Se non ha funzionato, devi farlo a mano. Per prima cosa, devi trovare l'indirizzo di base. Hai 3 modi per trovarlo:

1. dai messaggi di avvio di X11, per esempio:

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

2. da `/proc/pci` (usa il comando lspci -v):

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

3. dai messaggi del driver del kernel mga_vid (usa dmesg):

       mga_mem_base = d8000000

Ora troviamo la dimensione della memoria. Questo è molto facile, converti semplicemente la video RAM in esadecimale, o usa questa tabella:

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

Ora che sai l'indirizzo di base e la dimensione della memoria, impostiamo i registri MTRR! Per esempio, per la scheda Matrox suddetta (`base=0xd8000000`) con 32MB di ram (`size=0x2000000`) esegui semplicemente:

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

Non tutte le CPU hanno gli MTRR. Per esempio le CPU K6-2 più vecchie (intorno ai 266MHz, stepping 0) non hanno degli MTRR, ma gli stepping 12 invece sì (esegui cat /proc/cpuinfo per verificarlo).

Indietro | Risali | Avanti
Capitolo 8. Dispositivi di uscita video | Partenza | 8.2. Xv