メモリーを3GBytes以上付けたパソコンで pae カーネルを使うと、『 [drm] MTRR allocation failed. Graphics performance may suffer. 』 のようなエラーが syslog に記録されている。
エラーが出ていても(体感的に)特に問題があるわけではないのだが、気持ち悪いので修正してみることにする。
■ エラー発生しているときの状況
# dmesg | grep -i mtrr
[ 0.000000] MTRR default type: uncachable
[ 0.000000] MTRR fixed ranges enabled:
[ 0.000000] MTRR variable ranges enabled:
[ 28.925359] mtrr: type mismatch for d0000000,10000000 old: write-back new: write-combining
[ 28.925362] [drm] MTRR allocation failed. Graphics performance may suffer.
# cat /proc/mtrr
reg00: base=0x000000000 ( 0MB), size= 4096MB, count=1: write-back
reg01: base=0x100000000 ( 4096MB), size= 1024MB, count=1: write-back
reg02: base=0x140000000 ( 5120MB), size= 256MB, count=1: write-back
reg03: base=0x150000000 ( 5376MB), size= 128MB, count=1: write-back
reg04: base=0x0d0000000 ( 3328MB), size= 256MB, count=1: uncachable
reg05: base=0x0e0000000 ( 3584MB), size= 512MB, count=1: uncachable
■ 修正内容
起動時に渡すカーネル・パラメータを、grubで自動的に叩き込むようにするため、grubの設定ファイルにパラメータを追記する。
/etc/default/grub
#GRUB_CMDLINE_LINUX=""
↓
GRUB_CMDLINE_LINUX="enable_mtrr_cleanup mtrr_spare_reg_nr=1"
ファイルを保存の後、コマンドラインより 『 update-grub 』 コマンドを実行して、/boot/grub/grub.cfg をアップデートする。
■ 修正後(再起動後)の状況
# dmesg | grep -i mtrr
[ 0.000000] MTRR default type: uncachable
[ 0.000000] MTRR fixed ranges enabled:
[ 0.000000] MTRR variable ranges enabled:
[ 0.000000] original variable MTRRs
[ 0.000000] Found optimal setting for mtrr clean up
[ 0.000000] New variable MTRRs
[ 0.000000] Kernel command line: BOOT_IMAGE=/boot/vmlinuz-2.6.32-28-generic-pae root=UUID=22b78635-b2f1-4722-85d1-9630d0aa2e87 ro enable_mtrr_cleanup mtrr_spare_reg_nr=1 splash
# cat /proc/mtrr
reg00: base=0x000000000 ( 0MB), size= 2048MB, count=1: write-back
reg01: base=0x080000000 ( 2048MB), size= 1024MB, count=1: write-back
reg02: base=0x0c0000000 ( 3072MB), size= 256MB, count=1: write-back
reg03: base=0x100000000 ( 4096MB), size= 1024MB, count=1: write-back
reg04: base=0x140000000 ( 5120MB), size= 256MB, count=1: write-back
reg05: base=0x150000000 ( 5376MB), size= 128MB, count=1: write-back
reg06: base=0x0d0000000 ( 3328MB), size= 256MB, count=1: write-combining
■ 参考資料