Unable to map HPET
HPETを利用する必要がある場合はBIOSがHPETに対応しているかを確認する。HPETに非対応である場合にはBIOSを更新することで対応できるか否かを確認し更新で対応できる場合にはBIOSの更新を検討する。またBIOSのHPET関連設定は正しいかを確認して誤りがあれば修正する。本メッセージを出力するようなカーネルの修正情報がないかについても確認して修正パッチがある場合には適用を検討する。一方、HPETを利用する必要がない場合は、ブートパラメタclockを用いてHPET以外のタイマの利用をカーネルに指示することができる。ブートローダにgrubを利用していて、PITを利用する場合の設定例(/etc/grub.conf)を以下に示す。
title Red Hat Enterprise Linux AS (2.6.9-34.ELsmp)
root (hd0,0)
kernel /vmlinuz-2.6.9-34.ELsmp ro root=LABEL=/ rhgb quiet clock=pit
initrd /initrd-2.6.9-34.ELsmp.img
HPETテーブル(High Precision Event Timer description table)をカーネル空間にマッピングできなかった。
HPETは普及しているPIT(*1)よりも精度の高い新しいタイマチップであり、BIOSはHPETの情報を格納したHPETテーブルを物理アドレス空間にマッピングしている。x86アーキテクチャでHPETを有効としている場合、カーネルはシステム起動時に、HPETテーブルの開始アドレス(*2) とHPETテーブルのサイズ(*3)の情報を取得して、これらの情報を元にHPETテーブルをカーネル空間にマッピングしようとする。しかし情報が不正である場合、HPETテーブルをカーネル空間にマッピングすることができず、本メッセージを出力する。本メッセージが出力された場合、以後の処理でHPET 以外のタイムソースが選択されてHPETは利用できない。
マッピングに必要な上記の情報はBIOSが準備したものであるため、原因としてはBIOSの不正動作が疑われる。またカーネルが情報を取得したあとでカーネル自身の不具合のためにその内容を壊した可能性もある。
- (*1) PIT(Programmable Interval Timer)
- (*2) ACPIのXSDT(Extended Root System Description Table)またはRSDT(Root System Description Table)のテーブルエントリから取得
- (*3) HPETテーブルのヘッダから取得