GNU/Linux >> Linux の 問題 >  >> Linux

起動時の MTRR 不足

harrymc のおかげで、実際に /proc/mtrr を書き換えることができることがわかりました。以下を /etc/rc.local に入れ、再起動したところ、MTRR テーブルは正しかった。

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

また、カーネル開発に携わる何人かと話したところ、CONFIG_MTRR_SANITIZER という情報がありました。 過去数個のカーネルで壊れていたため、過去に他のカーネルで機能していた理由.


Arch Linux フォーラムでのあなた自身の質問に対する回答からの引用:

<ブロック引用>

dmesg から、i915/drmgraphics の初期化中に mtrr が不足していることが簡単にわかります。私はこの問題について特別な経験はありませんが、ここに私の提案があります:

<オール>
  • 「mtrr_spare_reg_nr=2」で起動し、「enable_mtrr_cleanup=1 (/boot/grub/menu.lst のカーネル行に追加)」も必要になる場合があります。
  • [testing] のカーネル 2.6.38 を試してください。
  • /proc/mtrr を見ると、ATOM CPU には 8 つの MTRR しかなく、本当に使い果たされています。しかし、記憶がそのような小さな断片に分割される方法は不可解です。一般に、このような問題は次の原因で発生する可能性があります:

    • BIOS - デバイスのメモリ割り当てを引き起こすパラメータを探します。
    • CPU とメモリを共有していて、BIOS によってメモリの真ん中に残酷に割り当てられた可能性のあるグラフィックス カード。
    • グラフィック カード ドライバ - 最新バージョンを検索してください。
    • 誤って構成されたカーネル。

    私が見ることができる最大の謎は、/proc/mtrr が 8GB を持っていると言っているということです。しかし、/proc/cpuinfo の「flags」エントリには「lm」が含まれていません。これは Arch64 FAQ によると、プロセッサーが x86_64 互換であるために必要です。 FAQ にはさらに次のように書かれています:

    <ブロック引用>

    Arch32 はデフォルトで 3GB を超える RAM をサポートしていないことに注意してください。それ以上の RAM がある場合は、Arch64 に切り替える必要があります。

    そのため、Arch32 と 8GB の RAM を使用しているように見えますが、これはドキュメントと矛盾しています。
    このパズルに光を当てていただけませんか?


    Linux
    1. /dev/shm/ と /tmp/ はいつ使用する必要がありますか?

    2. ブート パーティションのサイズ変更

    3. Linux で 100MB の ext2 ブート パーティションが推奨されるのはなぜですか?

    1. unix:///var/run/supervisor.sock そのようなファイルはありません

    2. 現在書き込み中の削除済みファイルを復元する

    3. /sys/ ドキュメント?

    1. Linuxは複数の連続したパスセパレーター(/ home //// username /// file)をどのように処理しますか?

    2. echo 3 > /proc/sys/vm/drop_caches - root としてのアクセス許可が拒否されました

    3. 推奨される使用方法に従って、Web サイトは /var/ または /usr/ に配置する必要がありますか?