Grâce à harrymc, j'ai découvert que vous pouvez réellement réécrire /proc/mtrr. J'ai mis ce qui suit dans /etc/rc.local, redémarré et ma table MTRR était correcte.
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
De plus, après avoir parlé à quelques personnes impliquées dans le développement du noyau, j'ai été informé que CONFIG_MTRR_SANITIZER
a été cassé pour les derniers noyaux, d'où la raison pour laquelle cela a fonctionné pour d'autres dans le passé.
Citant la réponse à votre propre question sur les forums Arch Linux :
À partir du dmesg, il est facile de voir qu'il manque de mtrr lors de l'initialisation de i915/drmgraphics. Je n'ai aucune expérience spécifique avec ce problème, mais voici mes suggestions :
- Démarrez avec 'mtrr_spare_reg_nr=2' et vous aurez peut-être aussi besoin de 'enable_mtrr_cleanup=1(add to kernel line in/boot/grub/menu.lst).
- Essayez le noyau 2.6.38 depuis [testing].
D'après l'apparence de votre /proc/mtrr, votre processeur ATOM n'a que 8 MTRR, et ils sont vraiment tous épuisés. Cependant, la façon dont la mémoire est divisée en si petits fragments est déroutante. En général, un tel problème peut être causé par :
- Le BIOS - recherchez les paramètres qui provoquent l'allocation de mémoire pour les appareils.
- La carte graphique qui pourrait avoir partagé de la mémoire avec le CPU et que le BIOS pourrait faire en sorte qu'elle soit allouée brutalement au milieu de la mémoire.
- Le pilote de la carte graphique :recherchez la dernière version.
- Un noyau mal configuré.
Le plus grand casse-tête que je peux voir est que /proc/mtrr indique que vous avez 8 Go. Mais dans /proc/cpuinfo l'entrée 'flags' ne contient pas 'lm', ce qui, selon la FAQ Arch64, est nécessaire pour que le processeur soit compatible x86_64. La FAQ dit en outre :
Notez que Arch32 ne supporte pas plus de 3Go de RAM par défaut :il faut vous tourner vers Arch64 si vous en avez plus.
Il semble donc que vous ayez Arch32 et 8 Go de RAM, ce que la documentation contredit.
Pourriez-vous peut-être jeter un peu de lumière sur cette énigme ?