GNU/Linux >> Belajar Linux >  >> Linux

Keluar dari MTRR saat boot

Berkat harrymc, saya menemukan bahwa Anda benar-benar dapat menulis ulang /proc/mtrr. Saya meletakkan yang berikut di /etc/rc.local, mem-boot ulang, dan tabel MTRR saya benar.

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

Selain itu, setelah berbicara dengan beberapa orang yang terlibat dalam pengembangan kernel, saya diberi tahu bahwa CONFIG_MTRR_SANITIZER telah rusak untuk beberapa kernel sebelumnya, karenanya mengapa ini berhasil untuk kernel lain di masa lalu.


Mengutip dari jawaban atas pertanyaan Anda sendiri di forum Arch Linux :

Dari dmesg, mudah untuk melihat bahwa mtrr habis selama inisialisasi grafis i915/drm. Saya tidak memiliki pengalaman khusus dengan masalah ini, namun inilah saran saya:

  1. Boot dengan 'mtrr_spare_reg_nr=2' dan Anda mungkin juga memerlukan 'enable_mtrr_cleanup=1(tambahkan ke baris kernel di/boot/grub/menu.lst).
  2. Coba kernel 2.6.38 dari [pengujian].

Dari tampilan / proc / mtrr Anda, CPU ATOM Anda hanya memiliki 8 MTRR, dan semuanya benar-benar habis. Namun, cara memori dipecah menjadi fragmen kecil seperti itu membingungkan. Secara umum, masalah tersebut dapat disebabkan oleh :

  • BIOS - cari parameter yang menyebabkan alokasi memori untuk perangkat.
  • Kartu grafis yang mungkin telah berbagi memori dengan CPU dan yang mungkin menyebabkan BIOS dialokasikan secara brutal di tengah memori.
  • Driver kartu grafis - cari versi terbaru.
  • Kernel yang salah dikonfigurasi.

Teka-teki terbesar yang bisa saya lihat adalah /proc/mtrr mengatakan Anda memiliki 8GB. Tetapi di /proc/cpuinfo entri 'flags' tidak berisi 'lm', yang menurut FAQ Arch64 diperlukan agar prosesor kompatibel dengan x86_64. FAQ lebih lanjut mengatakan :

Perhatikan bahwa Arch32 tidak mendukung lebih dari 3GB RAM secara default:Anda harus beralih ke Arch64 jika Anda memiliki lebih banyak.

Jadi sepertinya Anda memiliki Arch32 dan RAM 8GB, yang bertentangan dengan dokumentasi.
Bisakah Anda menjelaskan teka-teki ini?


Linux
  1. Bagaimana Linux Menangani Beberapa Pemisah Jalur Berturut-turut (/home////username///file)?

  2. Linux – Menautkan /proc/mnt Ke /proc/mounts?

  3. Bagaimana cara mendapatkan jalur proses di Unix / Linux

  1. Mengapa partisi boot ext2 100MB direkomendasikan untuk linux?

  2. unix:///var/run/supervisor.sock tidak ada file seperti itu

  3. Pulihkan file yang dihapus yang saat ini sedang ditulis

  1. Bash =~ Regex Dan Https://regex101.com/?

  2. /sys/ dokumentasi?

  3. echo 3 > /proc/sys/vm/drop_caches - Izin ditolak sebagai root