GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Keine MTRRs beim Booten

Dank harrymc habe ich entdeckt, dass man /proc/mtrr tatsächlich umschreiben kann. Ich habe Folgendes in /etc/rc.local eingefügt, neu gestartet und meine MTRR-Tabelle war korrekt.

echo "disable=7" > /proc/mtrr
echo "disable=6" > /proc/mtrr
echo "disable=5" > /proc/mtrr
echo "disable=4" > /proc/mtrr
echo "disable=3" > /proc/mtrr
echo "disable=2" > /proc/mtrr
echo "disable=1" > /proc/mtrr
echo "disable=0" > /proc/mtrr
echo "base=0x000000000 size=0x40000000 type=write-back" > /proc/mtrr
echo "base=0x03f500000 size=0x00100000 type=uncachable" > /proc/mtrr
echo "base=0x03f600000 size=0x00200000 type=uncachable" > /proc/mtrr
echo "base=0x03f800000 size=0x00800000 type=write-back" > /proc/mtrr
echo "base=0x040000000 size=0x10000000 type=write-combining" > /proc/mtrr

Außerdem wurde ich nach Gesprächen mit einigen Leuten, die an der Kernel-Entwicklung beteiligt sind, darüber informiert, dass CONFIG_MTRR_SANITIZER war in den letzten paar Kerneln kaputt, weshalb es in der Vergangenheit bei anderen funktioniert hat.


Zitieren aus der Antwort auf Ihre eigene Frage in den Arch Linux-Foren:

Aus dem dmesg ist leicht ersichtlich, dass ihm während der i915/drmgraphics-Initialisierung kein mtrr mehr zur Verfügung steht. Ich habe keine spezifische Erfahrung mit diesem Problem, aber hier sind meine Vorschläge:

  1. Booten Sie mit 'mtrr_spare_reg_nr=2' und Sie benötigen möglicherweise auch 'enable_mtrr_cleanup=1(add to kernel line in/boot/grub/menu.lst).
  2. Probieren Sie Kernel 2.6.38 von [testing].
  3. aus

Wie Ihr /proc/mtrr aussieht, hat Ihre ATOM-CPU nur 8 MTRRs, und sie sind wirklich alle aufgebraucht. Es ist jedoch rätselhaft, wie die Erinnerung in so kleine Fragmente zerlegt wird. Im Allgemeinen kann ein solches Problem verursacht werden durch :

  • Das BIOS - suchen Sie nach Parametern, die die Speicherzuweisung für Geräte bewirken.
  • Die Grafikkarte, die sich möglicherweise Speicher mit der CPU geteilt hat und die aufgrund des BIOS brutal in der Mitte des Speichers zugewiesen werden kann.
  • Der Grafikkartentreiber - suchen Sie nach der neuesten Version.
  • Ein falsch konfigurierter Kernel.

Das größte Rätsel, das ich sehen kann, ist, dass /proc/mtrr sagt, dass Sie 8 GB haben. Aber in /proc/cpuinfo enthält der Eintrag „flags“ nicht „lm“, was laut Arch64-FAQ erforderlich ist, damit der Prozessor x86_64-kompatibel ist. Die FAQ sagt weiter:

Beachten Sie, dass Arch32 standardmäßig nicht mehr als 3 GB RAM unterstützt:Sie müssen sich an Arch64 wenden, wenn Sie mehr haben.

Es scheint also, dass Sie Arch32 und 8 GB RAM haben, was der Dokumentation widerspricht.
Könntest du vielleicht etwas Licht in dieses Rätsel bringen ?


Linux
  1. Wie erhalte ich den Pfad eines Prozesses in Unix / Linux

  2. /proc/[pid]/pagemaps und /proc/[pid]/maps | Linux

  3. Wie finde ich heraus, aus welchem ​​Ordner ein Prozess läuft?

  4. Welche Datei in /proc wird vom Kernel während des Bootvorgangs gelesen?

  5. echo oder print /dev/stdin /dev/stdout /dev/stderr

Wie behandelt Linux mehrere aufeinanderfolgende Pfadtrennzeichen (/home////username///file)?

Linux – /proc/mnt mit /proc/mounts verknüpfen?

Linux – /sbin/init existiert nicht?

/proc/cpuinfo- und /proc/meminfo-Dateien unter Linux

Die Dateien /proc/mounts, /etc/mtab und /proc/partitions verstehen

Sollten Websites gemäß der empfohlenen Verwendung in /var/ oder /usr/ leben?