|
次のページ
前のページ
目次へ
3. その他のドライバ情報3.1 proc エントリとその使い方includes-AML-interpreter ドライバを使っているなら、この項を読んでください。
これらはレベル2かレベル3のプロセッサのスリープ状態 (C2 か C3) から抜け出る ための待ち時間を表します。これらは、次のように使うことができます。" 電源断 %n 経過するまで C2 でスリープ (%n は C3 に移行するまでの待ち時間 として見積られている)・・・"。 最初は無限大に設定されますが、C2 と C3 が有効にされる時に FACP テーブル上の 値によって決定されます。ドライバが BIOS のテーブルを読めず、とあらかじめ定義 した BIOS の変わりのテーブルを信頼するなら、これらの値は無限大のままです。 そのときは、C2 と C3 状態を正常に有効にするためには、自分で妥当な値に変更 しなければなりません。
これらは C2 か C3 のスリープ状態に入るための待ち時間を表します。 これらは非常に短く一定しています。最初は例外で無限大になっています (だから この状態には、はっきりと有効にするまで入りません)。
このエントリを読むことで、BIOSによって通知された (有効になっている) ACPI イベントに関連付けられた 16 進数を見ることができます。一つのウィンドウで
とし、もう一つのウィンドウで様々なボタンとキーの組合せを押して見てください。 それらのいくつかが ACPI イベントとして登録されていれば、イベントを見ることが でき、どのように登録されているかわかります。 ドライバはすべてのイベントを有効にしてはいません。現在 no-AML-interpreter ドライバの下で使用できるすべてのイベントを有効にする方法はありません。 ドライバによって電源ボタンが有効になっていても、それは /proc/sys/acpid/event の下のイベントとして見えるだけです。
これに書くことは、システムをスリープ状態に置く現在唯一の方法です――具体的に
とすれば、S1 に入ります。
警告――これをする前に、不要なプロセスを終了してください。ひょとしたら、 目覚めのきっかけに想定されている様々なキーを押すことをシステムは認識しない かもしれません(著者のものは、現在のドライバでキーを押すことを認識しません)。 no-AML-interpreter ドライバを使っているなら、この項を読んでください。
ACPI の /proc エントリのほとんどは、通知です――いくつかは ACPI イベントを 引き起こすのに使えます。それぞれ通知の詳細と使い方を記載します。
これは FACP テーブルのヘッダとボディにアクセスすることを許します。これを 読むことで、ACPI の能力と現在の状態を分かるために調査できるテーブルを見る ことができます――書くことで、完全なテーブルのヘッダとボディの差し替え (普通は ドライバにより完了しています) か、一つのレジスタの値の変更、のどちらかが できます。FACP テーブルを読み、それを理解するためには、pmtools パッケージを 使った方がいいでしょう。次のコマンドを実行してください。
幾分人間の読める形でテーブルのダンプが表示されます。
これは DSDT テーブルのヘッダとボディにアクセスすることを許します。 例外はありますが、facp エントリの注釈と同じことがいえます。dsdt エントリを 読み、それを理解するには、次のコマンドを実行するといいでしょう。
とすれば、ヘッダが見え、
とすれば (解釈された) AML を読めます。
このエントリを読むことで、どの電源管理イベントが有効にされているかみることが できます。各々のイベントはビットマスクに対応しています――そのマスクに対応した 値のビットがセットならイベントは有効で、オフならイベントは無効です。ACPI の 実装でサポートしているすべての電源管理イベントを有効にするには、このエントリに "0xffffffff" を書きます。このエントリを呼んだ場合、たぶん値は 0xffffffff ではありません。なぜなら、すべての定義されたイベントがサポート されていないからです (もしサポートされたとすると、すべてのビットは使われる のかな?)。
どのイベントをどのビットマスクに対応させるか決める方法は・・・
このエントリを読むことで、どの汎用イベントが有効にされているかみることが できます。前述の pm1_enable と同じ方法でこのエントリを操作できます。
どのイベントをどのビットマスクに対応させるか決める方法は・・・
このエントリを読むことで、汎用イベントがどのレベルなのか見ることが できます――このエントリに書くことはレベルを変更することになります (詳細は セクション 4.7 のチャイルドイベントのビットについての記述を見てください)。
このエントリを読むことで、BIOSによって通知された (有効になっている) ACPI イベントに関連付けられた 16 進数を見ることができます。gp1_enable と pm1_enable に 0xffffffff を書くことですべてのイベントを有効にしているなら、 次いで一つのウィンドウで
とし、もう一つのウィンドウで様々なボタンとキーの組合せを押して見てください。 それらのいくつかが ACPI イベントとして登録されていれば、イベントを見ることが できます。例えば、これは、電源ボタンが何かを見る一つの方法です。
例として、著者の Sony VAIO で実行した結果を以下に示します。
電源ボタンの押したことをみることができます――それは cat の最後の行です。
(仕様によれば) 各々のプロセッサのためにこれらの一つがあります――例えば C2 か C3 の状態にプロセッサを置くような、プロセッサの制御に使われます。 ドライバはある瞬間をとらえると一つのプロセッサだけをサポートしていますので、 /proc インターフェースにはこれらの一つの場所しかありません。ここに直接書く 必要は絶対にありません――一つのスリープ状態からもう一つの状態に切り換える時、 ドライバが書き込みます。
これらはレベル2かレベル3のプロセッサのスリープ状態から抜け出るための 待ち時間を表します。これらは、次のように使うことができます。" 電源断 %n 経過するまで C2 でスリープ (%n は C3 に移行するまでの待ち時間 として見積られている)・・・"。 最初は無限大に設定されますが、C2 と C3 が有効にされる時に FACP テーブル上の 値によって決定されます。ドライバに 'chipset' オプションを使用するなら、 これらの値は無限大に設定され、決して変更しません――C2 と C3 状態を正常に 有効にするためには、自分で妥当な値に変更しなければなりません。同様に、 ドライバがテーブルを見つけることができず、チップセット情報の使用が失敗した なら、自分で値を設定しなければなりません。
これらはレベル2かレベル3のスリープ状態に入るための待ち時間を表します。 これらは非常に短く一定しています。最初は例外で無限大になっています (だから この状態には、はっきりと有効にするまで入りません)。
これらは、いくつかの処理の後、正常にシステムを適切なスリープ状態 (S0, S1, S5) に置くために、pm1a_cnt と pm1b_cnt に詰め込む必要のある値を表します。 ドライバはこれらを初期化しません――acpid は BIOS を通してそれらを参照し、 ドライバが受け取った値によってそれらを設定するかドライバにたずねます。 acpid に問題があり直接これらの値を設定したいなら、チップセットによって推測し 試すか、DSDT のダンプ ("acpidmp DSDT | acpidisasm" のコマンドを 使う) の出力から見つけることができます。DSDT のダンプのこの項に関するところは 次のようなものになります。
出力はたくさん続きます。各々のエントリの2番目と3番目のバイトは、下記に示す ログの値に対応します。
acpid が動作しているなら、acpid が起動した時に /var/log/messages に書き込む これらの値を見ることができます。 例として、著者のログエントリは以下のようになっています。
そうです、おまけの数値2つを得れますが、現在の proc エントリではありません。
これに書くことは、システムをスリープ状態に置く現在唯一の方法です――具体的に
とすれば、S1 に入ります。
警告――これをする前に、不要なプロセスを終了してください。ひょとしたら、 目覚めのきっかけに想定されている様々なキーを押すことをシステムは認識しない かもしれません(著者のものは、現在のドライバでキーを押すことを認識しません)。
3.2 /var/log/messages 内の 'e820' からのメッセージの意味は何か?/var/log/messages 内に次のようなメッセージを見るかもしれません。
割込み 15 のサブファンクション e820 は、システムメモリマップを返すために BIOS が引き起こしています。 データ領域は、様々な ACPI テーブルが含まれます。テーブルの使用が終わったとき、 OS はこの領域を取り戻します。 NVS は Non-Volatile-Sleeping Memory の略語です――これは S4 状態に入る前に OS が保存と復旧を行う領域として想定されています。この領域は決して取り 戻されません。 ログ内に ACPI のデータ領域が見えないなら、これはたぶん、ドライバがテーブルを 見つけられなかったことを表します。どうにか動作していると思われるなら、たぶん チップセット固有の情報を使っています。調査のためにブートオプションを試みる ことができます (詳細は セクション 2.4 を見てください)。
次のページ 前のページ 目次へ |
[ |