Schlechte Grafikleistung aufgrund falscher mtrr-Einstellungen

7

Ich verwende den neuesten Kernel auf einem Dell LAtitude E4310 mit 8 GB RAM

2.6.38-10-generic #44-Ubuntu SMP Thu Jun 2 21:32:22 UTC 2011 x86_64 x86_64 x86_64 GNU/Linux

Beim Booten erhalte ich folgende Meldung

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

und in der Tat /proc/mtrrsieht mein Aussehen seltsam aus

reg00: base=0x000000000 (    0MB), size= 8192MB, count=1: write-back
reg01: base=0x200000000 ( 8192MB), size=  512MB, count=1: write-back
reg02: base=0x0e0000000 ( 3584MB), size=  512MB, count=1: uncachable
reg03: base=0x0dc000000 ( 3520MB), size=   64MB, count=1: uncachable
reg04: base=0x0db400000 ( 3508MB), size=    4MB, count=1: uncachable
reg05: base=0x21c000000 ( 8640MB), size=   64MB, count=1: uncachable

Ich habe es versucht, mtrr-uncoveraber es funktioniert nicht:

./mtrr-uncover 
Initial MTRR configuration:
 0  0x000000000-0x1ffffffff write-back
         4  0x0db400000-0x0db7fffff uncachable
         3  0x0dc000000-0x0dfffffff uncachable
         2  0x0e0000000-0x0ffffffff uncachable
 1  0x200000000-0x21fffffff write-back
         5  0x21c000000-0x21fffffff uncachable
./mtrr-uncover: 9 MTRRs needed but only 8 in architecture.

Weiß jemand, wie man den mtrr in meiner Architektur richtig einstellt?

hier die relevante Ausgabe von lspci -v

00:02.0 VGA compatible controller: Intel Corporation Core Processor Integrated Graphics Controller (rev 02) (prog-if 00 [VGA controller])
    Subsystem: Dell Device 0410
    Flags: bus master, fast devsel, latency 0, IRQ 42
    Memory at f0000000 (64-bit, non-prefetchable) [size=4M]
    Memory at e0000000 (64-bit, prefetchable) [size=256M]
    I/O ports at 60b0 [size=8]
    Expansion ROM at <unassigned> [disabled]
    Capabilities: <access denied>
    Kernel driver in use: i915
    Kernel modules: i915
Elforma
quelle
Ich glaube, dass der mtrr über e0000000 der AGP-Gart ist, daher haben Sie bereits einen mtrr über die Region, die drm zu ändern versucht. Ich vermute, wenn Sie das entfernen und durch ein WC ersetzen, könnte es funktionieren. Die Regeln für deren Überlappung sind jedoch sehr komplex und fehleranfällig.
Andy

Antworten:

5

Hierfür gibt es eine einfache Lösung. Verwenden Sie einfach den Kernel-Boot-Parameter enable_mtrr_cleanup.

/etc/default/grubKonfigurationsdatei bearbeiten :

$ sudo nano /etc/default/grub

Suchen Sie eine Zeile mit GRUB_CMDLINE_LINUX_DEFAULTund Sie werden wahrscheinlich diese Standardparameter sehen:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"

Um es zu verwenden enable_mtrr_cleanup, fügen Sie es folgendermaßen hinzu:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash enable_mtrr_cleanup"

Dann müssen Sie Ihre Grub-Konfiguration mit diesem Befehl aktualisieren:

$ sudo update-grub2

Und neu starten:

$ sudo reboot

Dann verschwindet die Meldung und Sie sehen, dass das System die richtigen Werte für MTRR gefunden hat.

k23
quelle
hat nicht für mich auf
debian wheezy gearbeitet