Grazie a harrymc, ho scoperto che puoi effettivamente riscrivere /proc/mtrr. Ho inserito quanto segue in /etc/rc.local, riavviato e la mia tabella MTRR era corretta.
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
Inoltre, dopo aver parlato con alcune persone coinvolte nello sviluppo del kernel, sono stato informato che CONFIG_MTRR_SANITIZER
è stato rotto per gli ultimi kernel, ecco perché ha funzionato per altri in passato.
Citando la risposta alla tua stessa domanda sui forum di Arch Linux :
Da dmesg, è facile vedere che si esaurisce mtrr durante l'inizializzazione di i915/drmgraphics. Non ho esperienza specifica con questo problema, ma ecco i miei suggerimenti:
- Avvia con 'mtrr_spare_reg_nr=2' e potresti aver bisogno anche di 'enable_mtrr_cleanup=1(aggiungi alla riga del kernel in/boot/grub/menu.lst).
- Prova il kernel 2.6.38 da [testing].
Dall'aspetto del tuo /proc/mtrr, la tua CPU ATOM ha solo 8 MTRR e sono davvero tutti esauriti. Tuttavia, il modo in cui la memoria viene suddivisa in frammenti così piccoli è sconcertante. In generale, un tale problema può essere causato da :
- Il BIOS:cerca i parametri che determinano l'allocazione della memoria per i dispositivi.
- La scheda grafica che potrebbe avere memoria condivisa con la CPU e che il BIOS potrebbe far sì che venga allocata brutalmente nel mezzo della memoria.
- Il driver della scheda grafica:cerca la versione più recente.
- Un kernel mal configurato.
Il più grande puzzle che posso vedere è che /proc/mtrr dice che hai 8 GB. Ma in /proc/cpuinfo la voce 'flags' non contiene 'lm', che secondo le FAQ di Arch64 è necessario affinché il processore sia compatibile con x86_64. Le FAQ dicono inoltre :
Nota che Arch32 non supporta più di 3 GB di RAM per impostazione predefinita:devi rivolgerti ad Arch64 se ne hai di più.
Quindi sembra che tu abbia Arch32 e 8 GB di RAM, cosa che la documentazione contraddice.
Potresti forse gettare un po' di luce su questo enigma?