Gracias a harrymc, descubrí que puedes reescribir /proc/mtrr. Puse lo siguiente en /etc/rc.local, reinicié y mi tabla MTRR era correcta.
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
Además, después de hablar con algunas personas involucradas en el desarrollo del kernel, me informaron que CONFIG_MTRR_SANITIZER
se ha roto en los últimos núcleos, por lo que funcionó para otros en el pasado.
Citando la respuesta a su propia pregunta en los foros de Arch Linux:
Desde el dmesg, es fácil ver que se queda sin mtrr durante la inicialización de i915/drmgraphics. No tengo experiencia específica con este problema, pero estas son mis sugerencias:
- Inicie con 'mtrr_spare_reg_nr=2' y es posible que también necesite 'enable_mtrr_cleanup=1 (agregar a la línea del kernel en/boot/grub/menu.lst).
- Prueba el kernel 2.6.38 de [testing].
Desde el aspecto de su /proc/mtrr, su CPU ATOM tiene solo 8 MTRR, y realmente todos están agotados. Sin embargo, la forma en que la memoria se divide en fragmentos tan pequeños es desconcertante. En general, este problema puede deberse a:
- El BIOS:busque parámetros que causen la asignación de memoria para los dispositivos.
- La tarjeta gráfica que podría haber compartido memoria con la CPU y que el BIOS podría causar que se asigne brutalmente en medio de la memoria.
- El controlador de la tarjeta gráfica:busque la última versión.
- Un kernel mal configurado.
El mayor rompecabezas que puedo ver es que /proc/mtrr dice que tienes 8 GB. Pero en /proc/cpuinfo, la entrada 'flags' no contiene 'lm', que según las preguntas frecuentes de Arch64 es necesario para que el procesador sea compatible con x86_64. Las preguntas frecuentes dicen además:
Tenga en cuenta que Arch32 no admite más de 3 GB de RAM de forma predeterminada:debe cambiar a Arch64 si tiene más.
Entonces parece que tienes Arch32 y 8 GB de RAM, lo que contradice la documentación.
¿Podrías arrojar algo de luz sobre este rompecabezas?