01 February 2011

(Ubuntu 10.04) MTRR allocation failed. Graphics performance may suffer エラーの回避

メモリーを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

■ 参考資料

Ubuntu 10.04: Fixing mtrr errors