  Linux ACPI-HOWTO
  Ariel Glenn (ariel@columbia.edu)
  v 0.1c, 16 July 2000
  The Linux Japanese FAQ Project (JF@linux.or.jp)
  v 0.1cj, 24 December 2000

  この文書は Linux の ACPI ドライバのコンパイルやインストールおよび使い
  方と、アプリケーションとの関連について記述します。この文書の最新版は
  http://www.columbia.edu/~ariel/acpi/acpi_howto.txt から入手できます。
  ______________________________________________________________________

  目次

  1. 一般的な情報と必要なハードウェア
     1.1 はじめに
     1.2 Copyright notice and disclaimer
     1.3 文書の変更
     1.4 最新の acpi ドライバと acpid パッケージと pmtools パッケージはどこに あり、どこから入手できるか？
     1.5 バイナリ配布で入手できるか？
     1.6 どのチップセットがサポートされているか？
     1.7 どのカーネルがサポートされているか？
     1.8 どの BIOS がサポートされているか？
     1.9 お気に入りの (サポートされていない) システムがいつ サポートされるのか？
     1.10 ACPI 能力の何がサポートされているか？
     1.11 メーリングリストと他の情報源

  2. コンパイルとインストール
     2.1 前提条件とカーネルのセットアップ
     2.2 acpid と acpictl のビルドとインストール
     2.3 pmtools のコンパイルとインストール
     2.4 ドライバオプション
     2.5 システムリソースの設定

  3. その他のドライバ情報
     3.1 proc エントリとその使い方
     3.2 /var/log/messages 内の 'e820' からのメッセージの意味は何か？

  4. デバッグのこつとプログラミング情報
     4.1 ドライバが正しく動作していない。いかにして何が悪いか解明するか？
     4.2 役立つバグレポートの提出
     4.3 Linux のデバイスドライバを書く人のための指針

  5. 準備中
  6. クレジットとライセンス情報
     6.1 クレジット
     6.2 GNU Free Documentation License

  7. 日本語訳について

  ______________________________________________________________________

  1.  一般的な情報と必要なハードウェア

  1.1.  はじめに

  "Advanced Configuration and Power Interface" の略語である ACPI は APM
  (Advanced Power Management) に取って代わるものです。その仕様は電源管理
  に加えて温度管理やプラグアンドプレイイベント等といったたくさんの機能を
  規定しています。しかしながら、この文書は ACPI4Linux グループの今日まで
  の主要な作業である電源管理機能に集中します。

  Linux のための ACPI サポートは最近のカーネルとともに供給されるドライバ
  と、 acpid パッケージに含まれるデーモンとクライアント、pmtools と呼ば
  れる解析とデバッグのツールを集めたものから成ります。これらのパッケージ
  とドライバはまだ開発の初期段階です。安定したソフトウェアと考えるべきで
  はありません。それらを使用する前に、しかるべき予防策を取ってください。
  それでもたくさんの人がそれらのテストとデバッグを行い、機能追加している
  ので、すぐに製品品質になるでしょう。もちろんあなたの力添えは大歓迎で
  す！

  この文書についての提案や苦情、意見があれば、著者 ariel@columbia.edu ま
  で送ってください。ドライバのバグレポートは送らないでください――ドライ
  バのバグの報告方法の詳細はセクション 4.2 (役立つバグレポートの提出) を
  参照してください。

  1.2.  Copyright notice and disclaimer

  Copyright (c) 2000 Ariel T. Glenn

  Permission is granted to copy, distribute and/or modify this document
  under the terms of the GNU Free Documentation License, Version 1.1
  or any later version published by the Free Software Foundation;
  with no Invariant Sections, with no Front-Cover Texts, and with
  no Back-Cover Texts. A copy of the license is included in the section
  entitled "GNU Free Documentation License".

  This document is provided ``AS IS'', with no express or implied
  warranties.  Use the information in this document at your own risk.

  1.3.  文書の変更

       0.1c  pmtestのスクリプトとユーティリティの文書を追加
             ACPI 仕様のバージョン番号を修正
             2.4.0-test3およびそれ以降のカーネルに含まれるドライバの情報を追加
             (新しい /proc インターフェース、新しい acpid 機能の限定、
             ドライバオプションの変更)

  1.4.  最新の acpi ドライバと acpid パッケージと pmtools パッケージはど
  こに あり、どこから入手できるか？

  acpi ドライバの最新バージョンはいつも一番新しい Linux のカーネルに含ま
  れます。この文書を書いてる時点では 2.4.0-test5-pre1 です。カーネルは
  ftp://ftp.kernel.org/ から入手できます。昔のバージョンにさかのぼってド
  ライバを使うパッチはありません。

  最新の acpid は 2.4.0-test3 およびそれ以降のカーネルで AML インタープ
  リタを有効にした時のもので、acpid-071100.tar.gz です。そうでないものは
  acpid-052200.tar.gz です。最新の pmtools は pmtools-060600.tar.gz で
  す。最新のバージョンは
  http://www.geocities.com/SiliconValley/Hardware/3165/ か、ミラーサイト
  の http://phobos.fs.tum.de/acpi/download.html から入手できます。これら
  のパッケージは全部のソースを含みます。

  1.5.  バイナリ配布で入手できるか？

  いいえ――ドライバは開発カーネルに含まれているだけなので、コンパイル済
  みのバージョンは入手できません。acpid と pmtools も開発段階のソフト
  ウェアなので同様にバイナリ配布は用意されていません。

  1.6.  どのチップセットがサポートされているか？

  理論的には、ACPI に準拠した実装はサポートされます。実際には、誤って
  ACPI を実装したものが出荷されています。具体的に言うと、ドライバが対象
  としたチップセットの実装でさえ奇異な動作をする可能性があります。ドライ
  バが期待した振る舞いをする具体的なシステム： (それらをここに記述) 奇妙
  な振る舞いをするシステム： (それらをここに記載)

  1.7.  どのカーネルがサポートされているか？

  バージョン 2.3.19 から、開発カーネルに ACPI ドライバが含まれるようにな
  りました。2.2.x のために一度だけ作られたパッチがありましたが、新しい機
  能が追加されても 2.2.x にさかのぼって変更を行うパッチを作る試みはあり
  ません。そしてそれらのパッチはもはや入手できません。

  1.8.  どの BIOS がサポートされているか？

  BIOS の製造会社とバージョンおよびBIOS がサポートする ACPI の能力の表は
  http://phobos.fs.tum.de/acpi/bios.sql から入手できます。

  1.9.  お気に入りの (サポートされていない) システムがいつ サポートされ
  るのか？

  あなたがパッケージをテストし、あなたの ACPI BIOS についての情報を開発
  者に送ることができれば、すぐにサポートされるでしょう。あなたの BIOS の
  ための数行のコードを書き、提出すれば、さらに早くサポートされるでしょ
  う。:-)

  あなたの BIOS の能力を測定する方法はセクション XXX を参照してくださ
  い。

  1.10.  ACPI 能力の何がサポートされているか？

  現在のところ、ドライバでサポートされる ACPI 能力は、スリープモード
  (S1)、リジューム、パワーオフ (S5) のみです。次にサポートされるのはサス
  ペンド状態の他のものが予定されています――サスペンドが後回しなの
  は、suspend-to-disk (ハイバネーション) などの他のデバイスドライバの更
  新と統一される必要があるからです。

  1.11.  メーリングリストと他の情報源

  ACPI ドライバとそのサポートパッケージは ACPI4Linux プロジェクトの作業
  で、 ACPI4Linux プロジェクトのウェブサイトが
  http://phobos.fs.tum.de/acpi/ にあります。

  ユーザと開発者が参加できるメーリングリストを持っています。主題の欄に
  "Subscribe" と書いたメールを acpi-request@phobos.fs.tum.de に送るか、
  メーリングリストへの参加のためのウェブインターフェースが
  http://phobos.fs.tum.de/mailman/listinfo/acpi にあるのでそれを使用して
  参加できます。メーリングリストのアーカイブは
  http://phobos.fs.tum.de/pipermail/acpi/ にあります。

  ACPI 自体の仕様はウェブ上の http://www.teleport.com/~acpi/ にありま
  す。acpid で使用される特定の AML インタープリタと ACPI コアコードを含
  む ACPI コンポーネントアーキテクチャの詳細は、
  ftp://download.intel.com/technology/iapc/downloads/cadoc100.zip から入
  手できます。

  2.  コンパイルとインストール

  2.1.  前提条件とカーネルのセットアップ

  ドライバのバージョンは２つあります。ひとつは 2.4.0-test3 よりも前のカ
  ーネルに含まれるバージョンです。以下、no-AML-interpreter バージョンと
  呼ぶことにします。これは 2.4.0-test3 および、それ以降のカーネルのバー
  ジョンで CONFIG_ACPI_INTERPRETER に N と応答し実行したバージョンと同じ
  です (以下のコンフィグレーションオプションズを参照のこと)。もうひとつ
  は 2.4.0-test3 および、それ以降のカーネルで CONFIG_ACPI_INTERPRETER に
  Y と応答し実行したバージョンです。以下、includes-AML-interpreter バー
  ジョンと呼ぶことにします。このドキュメントを読むに当たって、あなたが使
  用されるドライバがどのバージョンかを知っておく必要があるでしょう。

  一番新しいカーネル (2.4.0-xxx) を手に入れることから始めるべきです。初
  期のカーネルのバージョンに含まれる初期のドライバのバージョンは、一番新
  しい acpid や pmtools との動作が保証されていません。しかも acpid や
  pmtools のパッケージで入手できるバージョンは、最新のものしかありませ
  ん。

  カーネルをビルドするのに必要なすべてのパッケージの更新を必ず行ってくだ
  さい (そのための情報がカーネルソースツリーの中の
  "Documentation/Changes" というファイルにありますので、参照してくださ
  い)。 Linux カーネルのビルドについてのもっと一般的情報は "Kernel-
  HOWTO" を参照してください。Linux HOWTO は Linux Documentation Project
  を含むたくさんのサイトで維持されています。Linux Documentation Project
  の URL は、 http://www.ldp.org/ です。

  ACPI サポートのためには、カーネルのリビルドが必要です。 CONFIG_ACPI オ
  プションに Y と答えてください。(今のところ)実験的なサポートですが、ス
  リープモードを組み込みたい場合、 CONFIG_ACPI_S1_SLEEP オプションにも Y
  と答えればいいです。 APM サポートを無効にする必要はありません――ACPI
  サポートは実行時に APM サポートを見つけると、実行しているカーネルが自
  動的にオフにします。 2.4.0-test3 かそれ以降のドライバの新しいインター
  フェースを試したいのなら、 CONFIG_ACPI_INTERPRETER に Y と答えればいい
  です。これにより、 "AML interpreter" が正しく組み込まれ、
  /proc/sys/acpi インターフェース内にもいくつかの変更が行われます。

  コンフィグレーションの後に、いつものようにカーネルをビルドしインストー
  ルしてください。

  /proc/sys/acpi の試験をすることによって、ドライバのテストができます―
  ― /proc/sys/acpi が存在しないなら、たぶんカーネルが正しく構成されてい
  ません。存在しているなら、以下のように見えなければなりません。

  includes-AML-interpreter ドライバを使っている場合

       /proc/sys/acpi/c2_exit_latency
       /proc/sys/acpi/c2_enter_latency
       /proc/sys/acpi/c3_exit_latency
       /proc/sys/acpi/c3_enter_latency
       /proc/sys/acpi/event

  no-AML-interpreter ドライバを使っている場合

  /proc/sys/acpi/facp
  /proc/sys/acpi/dsdt
  /proc/sys/acpi/pm1_enable
  /proc/sys/acpi/gpe_enable
  /proc/sys/acpi/gpe_level
  /proc/sys/acpi/event
  /proc/sys/acpi/p_blk
  /proc/sys/acpi/p_lvl2_lat
  /proc/sys/acpi/p_lvl3_lat
  /proc/sys/acpi/enter_lvl2_lat
  /proc/sys/acpi/enter_lvl3_lat
  /proc/sys/acpi/s0_slp_typ
  /proc/sys/acpi/s1_slp_typ
  /proc/sys/acpi/s5_slp_typ.

  どちらのドライバを使っていても、スリープオプションでコンパイルしたな
  ら、

       /proc/sys/acpi/sleep

  も見えなければなりません。

  no-AML-interpreter ドライバを使っているなら

       次のコマンドを試すことができます。

       cat -v /proc/sys/acpi/facp | more

       文字が 'FACP' で始まり、数バイトの文字化けの後に OEM 名が表
       示されます。もし、これが見えたならドライバはBIOSから適正なテ
       ーブルを見つけたと言うことなので、うまくいくかもしれません。
       見えないなら、ブートオプション (またはモジュールオプション)
       のひとつを設定する必要があるかもしれません。これについてはド
       ライバオプションのセクションで記述しています。

  includes-AML-interpreter ドライバを使っているなら

       /proc に見るべきものはあまりありません。/var/log/messages 内
       の 'ACPI: ACPI support found' の行をチェックできます――この
       行が見えたなら、 FACP を含むすべてのテーブルはロードさ
       れ、AML namespace のロードも同様に成功しています。しかしなが
       ら、この行の後の方に 'ACPI: enable failed' という行があった
       なら、イベントか SCI ハンドラの設定か、ACPI モードへのシステ
       ム移行で問題があったことを意味します。なので、システムは
       ACPI イベントを処理できません。ログエントリのもっと詳細な議
       論はセクション XXX にあります。

  2.2.  acpid と acpictl のビルドとインストール

  ACPI サポートしたカーネルをビルドしたら、すぐに適切な acpid のバージョ
  ンをダウンロードしてください。includes-AML-interpreter ドライバを使っ
  ているなら acpid-071100.tar.gz を、違うなら acpid-052200.tar.gz をダウ
  ンロードしなければなりません。

  パッケージをビルドしたいディレクトリを作成します。cd でディレクトリの
  中に入り、アーカイブを unpack するコマンドを与えます。

       zcat acpid-xxx.tar.gz | tar xvf -

  xxx はダウンロードしたパッケージのバージョンです。

  同じディレクトリで、

       ./configure

  と入力すると、パッケージの構成が行われます。

       make

  とするとビルドが行われ

       make install

  とするとインストールされます。既定のインストールディレクトリが
  /usr/local であることに注意してください――ファイルをインストールする
  場所を他に選ぶなら、パッケージの構成で次のようにする必要があります。

       ./configure --prefix=/new/place/to/put/them

       (訳注：/new/place/to/put/them を好みの場所に置きかえて入力し
       ます。)

  インストールされるプログラムは acpid と acpictl です。既定では、acpid
  は /usr/local/sbin に、acpictl は /usr/local/bin に置かれます。現時点
  でこれらの man ページは入手できないので、それぞれのプログラムのクィッ
  クサマリをここに記載します。
  includes-AML-interpreter ドライバを使っているなら、この項を読んでくだ
  さい。

       acpid は ACPI イベントを監視し、処理するデーモンです――ユー
       ザの要求の監視とドライバへの送信も行います。以下のオプション
       を受け付けます。

         -d または --debug    フォアグランドでデーモンを実行
         -v または --version  バージョン情報を出力

       acpictl は acpid と通信するためのユーザクライアントです。以
       下のオプションを受け付けます。

         -p または --pid           acpid のプロセス ID を出力
         -b または --battery       電池情報を出力――このオプションは新しいドライバ
                                   でも未だ動作しません
         -i または --intermediary  他のプログラムと acpid との仲立ち

       実のところ intermediary オプションは、現在何もしていません
       :-)

  no-AML-interpreter ドライバを使っているなら、この項を読んでください。

       acpid は ACPI イベントを監視し、処理するデーモンです――ユー
       ザの要求の監視とドライバへの送信も行います。以下のオプション
       を受け付けます。

         -d または --debug    フォアグランドでデーモンを実行
         -t または --trace    (かなり大きい) デバッグトレースの作成
         -v または --version  バージョン情報を出力

       tty から引き離さず debug オプションを使用した acpid の実行
       は、対話式で各種のコマンドを指定することをユーザに許します。
       コマンドのリストは debug モードにおいて 'help' コマンドを与
       えることで見ることができます。

       acpictl は acpid と通信するためのユーザクライアントです。以
       下のオプションを受け付けます。
         -p または --pid           acpid のプロセス ID を出力
         -b または --battery       電池情報を出力
         -i または --intermediary  他のプログラムと acpid との仲立ち

       実のところ intermediary オプションは、現在何もしていません
       :-)

  2.3.  pmtools のコンパイルとインストール

  pmtools パッケージ内のいくつかのユーティリティの実行には perl が必要で
  す。

  確実に一番新しい pmtools のバージョンをダウンロードしてください。パッ
  ケージをビルドしたいディレクトリを作成します。cd でディレクトリの中に
  入り、アーカイブを unpack するコマンドを与えます。

       zcat pmtools-xxx.tar.gz | tar xvf -

  xxx はダウンロードしたパッケージのバージョンです。

  同じディレクトリで、

       make

  と入力すると、パッケージのビルドが行われます。

  ユーティリティをインストールする機能は未だ提供されていないので、手動で
  適切な場所にユーティリティをコピーします。

       cp acpianalyze/acpianalyze /usr/local/bin
       cp acpidisasm/acpidisasm /usr/local/bin
       cp acpidmp/acpidmp acpdmp/acpitbl acpidmp/acpxtract /usr/local/bin
       cp pmtest/pmtest /usr/local/bin

  または好みのディレクトリにインストールしてもいいです。

  このパッケージも文書が提供されていないので、クィックサマリをここに記載
  します。

  acpidmp は root か suid を設定して実行しなければなりません (マルチユー
  ザシステムとして稼動しているなら、root で実行したほうがいいです。それ
  にしても何でマルチユーザシステムに開発カーネルをインストールしてる
  の？)。

  acpidmp は ACPI BIOS によって提供されるテーブルを捜し、指定された標準
  出力 (stdout) にダンプします。テーブルは FACP, DSDT, RSDT と名づけられ
  ています。これらのテーブルの内部を知りたいのなら、ACPI バージョン 1.0b
  の仕様を見てください。名前を与えず acpidmp を実行した場合、テーブルの
  すべてを捜し、標準出力にダンプします。この場合、コマンドラインでは応答
  しない RSDP も見ることができます。

  acpidmp は人間が読み取れる出力を作成しません。読めるようにするには、パ
  イプで acpidisasm に渡す必要があります。著者の Sony VAIO F420 での例を
  示します。

       acpidmp DSDT | acpidisasm

  作成された出力は

       00000000: Scope _PR_ (\_PR_)
       00000006:   Processor CPU0 (\_PR_.CPU0)
       0000000d:     0x00
       0000000e:     0x00008010
       00000012:     0x06
       00000013: Name _S0_ (\_S0_)
       00000018:   Package
       0000001a:     0x04
       0000001b:     0x05
       0000001d:     0x05
       0000001f:     0x00
       00000021:     0x00
       00000023: Name _S1_ (\_S1_)
       00000028:   Package
       0000002a:     0x04
       0000002b:     0x04
       0000002d:     0x04
       0000002f:     0x00
       00000031:     0x00
       00000033: Name _S3_ (\_S3_)
       00000038:   Package
       0000003a:     0x04
       ...

  です (3800 行ぐらいの出力があるので、休憩してもいいですよ)。

  上記は DSDT テーブルを検索した AML の実際の解読結果です。

  no-AML-interpeter ドライバを使っているなら、AML 無しでテーブルのヘッダ
  の参照と登録のために acpitbl を使用できます――acpitbl は /proc エント
  リを参照します。 /proc エントリはカーネルで AML interpreter が有効に
  なっていると利用できません。著者の laptop の例を示します。

       acpitbl /proc/sys/acpi/dsdt

  とすれば、出力は

       Signature:        DSDT
       Length:           11841
       Revision:         0x01
       Checksum:         0x3c
       OEMID:            SONY
       OEM Table ID:     K1
       OEM Revision:     0x20000203
       Creator ID:       MSFT
       Creator Revision: 0x01000007

  となり、これは dsdt テーブルのヘッダです。

  FACP テーブルも同じ方法で調べられます。

       acpitbl /proc/sys/acpi/facp

  著者の laptop では

  Signature:        FACP
  Length:           116
  Revision:         0x01
  Checksum:         0x12
  OEMID:            SONY
  OEM Table ID:     K1
  OEM Revision:     0x20000203
  Creator ID:       PTL
  Creator Revision: 0x000f4240
  FIRMWARE_CTRL:    0x03ffffc0
  DSDT:             0x03ffc924
  INT_MODEL:        0x00
  SCI_INT:          9
  SMI_CMD:          0x000000b2
  ACPI_ENABLE:      0xf0
  ACPI_DISABLE:     0xf1
  S4BIOS_REQ:       0xf2
  PM1a_EVT_BLK:     0x00008000
  PM1b_EVT_BLK:     0x00000000
  PM1a_CNT_BLK:     0x00008042
  PM1b_CNT_BLK:     0x00000000
  PM2_CNT_BLK:      0x00000022
  PM_TMR_BLK:       0x00008008
  GPE0_BLK:         0x0000800c
  GPE1_BLK:         0x00000000
  PM1_EVT_LEN:      4
  PM1_CNT_LEN:      2
  PM2_CNT_LEN:      1
  PM_TM_LEN:        4
  GPE0_BLK_LEN:     4
  GPE1_BLK_LEN:     0
  GPE1_BASE:        0
  P_LVL2_LAT:       10
  P_LVL3_LAT:       4097
  FLUSH_SIZE:       0
  FLUSH_STRIDE:     0
  DUTY_OFFSET:      1
  DUTY_WIDTH:       3
  DAY_ALRM:         0x0d
  MON_ALRM:         0x00
  CENTURY:          0x32
  Flags:            0x00000000

  と見えます。あなたも同じエントリ名が見えるはずですが、値は異なるかもし
  れません。

  もう一つの方法として、includes-AML-interpreter ドライバを使っているな
  ら、/proc から読む代わりに、一番確かな /dev/mem からテーブルを読むこと
  ができます。それは

       acpidmp FACP | acpitbl

  とすると、実際の値に非常に近い結果が得られま
  す。CONFIG_ACPI_INTERPRETER に Y と答えた場合のみ利用できる方法です。

  pmtest はデバイスドライバの作者用です。作者が作者のドライバに異なるス
  リープ状態のサポートを追加する時に使用します。

  pmtest は /proc 内に以下のエントリをセットアップするカーネルモジュール
  です。

       /proc/driver/pmtest/devices

  このインターフェースを読むことで、どのデバイスが電源管理のために登録さ
  れているのか、そして、そのデバイスがどの状態にいるのか、調べることがで
  きます。各々のデバイスについて、次の３つの項目を全部書き出しています。

       devicetype deviceid state

  state は 0-3 で、D0-D3 のデバイスの状態に対応します。 devicetype は
  0-5 で、/usr/include/linux/pm.h に列挙されたデバイスタイプに対応しま
  す。 deviceid も /usr/include/linux/pm.h に記載された内の一つに対応し
  ます。

       /proc/driver/pmtest/control

  このファイルに書くことで、/proc/driver/pmtest/devices で一覧表示される
  デバイスの一つをサスペンド状態 (D0-D3 の一つ) に置くことができます。
  /proc/driver/pmtest/devices を見た時と同じように、前述した次の３つの項
  目を書かなければなりません。

       devicetype deviceid state

  今まで説明したカーネルモジュール pmtest を直接使用する代わりに、同じ
  ディレクトリ (既定では /usr/local/bin) にある perl スクリプトの pmtest
  を使うべきです。なぜ？それは、簡単だし、便利だし、それから (ほとんどの
  コマンドで) デバイスの ID とタイプを数値に変換しなくてもいいからです。

  insmod と rmmod があなたの path にあることを確認してください。スクリプ
  トは root で実行してください。pmtest はモジュールをロードし、与えられ
  たコマンドを実行し、それからモジュールをアンロードする、とてもテストに
  は便利なものです。

  使用法： pmtest [OPTION] [TYPE] [ID]

    OPTION は次の一つです。
      -l                   デバイスの一覧表示 (既定値)
      -d0                  デバイスをリジューム (ACPI D0)
      -d1, -d2, -d3        デバイスをサスペンド (ACPI D1-D3)

    TYPE は次の一つです。
      unknown PCI USB SCSI ISA system

    ID は次の一つです。
      keyboard serial irda floppy vga pcmcia
    あるいは /usr/include/linux/pm.h にあるデバイスの数値を指定します。

  例として：
    pmtest -l PCI           PCI として登録されたデバイスの一覧表示
    pmtest -d0 VGA          コンソールをリジューム (見えるように)
    pmtest -d3 PCI 0x1234   ある PCI デバイスをサスペンド

  (ACPI をオフにした) 著者の laptop を例にすると、以下のように見えます。

         [root@devel2 pmtest]# ./pmtest -l
           VGA (D0)
           PCMCIA (D0)
           keyboard (D0)
           PCI 0x0 (D0)

  2.4.  ドライバオプション

  includes-AML-interpreter ドライバを使っているなら、実行時のオプション
  はありません。

  no-AML-interpreter ドライバを使っているなら、ACPI ドライバは (モジュー
  ルまたはカーネルブートでの) 実行時に以下のオプションをサポートしま
  す(訳注：既定値の説明は省略された場合、このオプションがセットされてい
  るのかオフなのかを意味します)。

     on 初期化時、ドライバは ACPI 準拠デバイスを探し使えるようにしようと
        します。(既定値はセット)

     off
        ドライバは ACPI 準拠デバイス を探さず、ACPI イベント処理を行いま
        せん。 /proc エントリも作成しません。このオプションは実行時に
        ACPI を無効にするために使います。APM とともに ACPI をコンパイル
        しているなら、このオプションで ACPI をオフにし、APM で電源管理イ
        ベントを処理できます。 (既定値はオフ)

     tables
        ACPI BIOS はたくさんのテーブルを用意しています。これらのテーブル
        は、例えば、能力、ステータスレジスタへのポインタ、スリープ状態に
        移行させるためのレジスタへのポインタ、の情報を含んでいます。ACPI
        イベントを有効にし、引き起こすために、ドライバはこれらのテーブル
        を使います。通常、特定のチップセットはいつも同じ能力とレジスタを
        持つはずですが、BIOS が用意するテーブルを使うのが確実と思うな
        ら、このオプションをセットします。 (既定値はオフ)

     chipset
        前記のオプション tables と似たようなもので、このオプションは、既
        知のチップセットのリスト中のチップセットのためあらかじめ用意され
        たテーブルを使うこと、をドライバに伝えます――あなたのデバイスが
        このリストにあるもので、 BIOS が用意したテーブルを間違いではない
        かと思っている場合、このオプションを使ってみてください。現在この
        オプションでこのオプションでサポートされるチップセットのリストは
        PIIX4 と VIA です。(既定値はオフ)

     no-errata
        ACPI の実装社 (者) は root-level ACPI table header (RSDP) の変更
        を "公開" したかもしれません。理論的には、このオプションはこれら
        の変更を無視するようドライバに伝えるはずです。実際には、現時点の
        ドライバのバージョンで、このオプションは実装されていないようで
        す。

     copy-tables
        このオプションがセットされていると、FACP と DSDT の ACPI のテー
        ブルは、それらが使われる前にメモリの新しい場所にコピーされます。
        いくつかの ACPI BIOS は、これを必要とします。これらの BIOS は
        memory map code によってまだ確保されていない low メモリにテーブ
        ルを置きます。コピーは、後で使うことが可能なテーブルの十分なス
        ナップショットを持つことを保証します。初期化時に
        /var/log/messages に "ACPI: unreserved memory @ 0xnn!" と書くな
        ら、この BIOS はコピーの必要な BIOS であることがわかります。(既
        定値をセットにする BIOS はリストで決まっています。現在このリスト
        に含まれているのは AMI だけです。他の BIOS でのこのオプションの
        既定値はオフです。)

     trust-tables
        このオプションは通常、前記の copy-table オプションと一緒に使われ
        ます。BIOS が、memory map code によってまだ確保されていない low
        メモリに ACPI テーブルを公開する時に、このオプションを使います。
        ログに前記と同じメッセージが書かれます。警告――このオプションを
        使い、テーブルが実際に存在しないなら、カーネルパニックを起こしま
        す。 (既定値をセットにする BIOS はリストで決まっています。現在こ
        のリストに含まれているのは AMI だけです。他の BIOS でのこのオプ
        ションの既定値はオフです。)

     no-sci
        このオプションが有効なら、ACPI のために irq を使用せず、有効なイ
        ベントや処理されるイベントはありません。詳しく言えば、pm1x_evt,
        gpe0, gpe1 レジスタに対する変更を行いません。デバッグ目的のため
        にドライバに ACPI テーブルをロードしたいが、いくつかのイベントの
        扱いはしたくない時に、このオプションを使うといいでしょう。(既定
        値はオフ)

     no-c2, no-c3
        初期化前に、プロセッサの電源状態が C2 と C3 の状態に入ることがで
        きないように、いくつかのグローバル変数をセットします。普通の初期
        化の間に、C2 (CPU アイドル) と C3 (キャッシュがスヌープを無視す
        る CPU アイドル) の状態は両方とも有効にされます。これらのオプ
        ションをセットすると、このステップはスキップされます。no-c2 オプ
        ションをセットすると、C2 状態に入れなくなります。 no-c3 オプショ
        ンをセットすると、C3 状態に入れなくなります。(既定値はオフです)

     no-s1, no-s5
        これらのオプションがセットされると、S1 と S5 のスリープ状態に入
        りません。 no-s1 オプションをセットすると、S1 状態あるいはスリー
        プモードに入れなくなります。no-s5 オプションをセットする
        と、S5(ソフトオフ) 状態に入れなくなります。(no-s5 の既定値はオフ
        です。no-s1 の既定値は、カーネルコンフィグレーション時に
        CONFIG_ACPI_S1_SLEEP を定義していないならセット、定義したならオ
        フです。)

  2.5.  システムリソースの設定

  pci ドライバが ACPI デバイスの適切な割込みの pin を見つけることができ
  ないならブートオプションとして、カーネルに pci=biosirq を指定する必要
  があるかもしれません。通常カーネルは IRQ ルーティングテーブルのために
  確保されたメモリ領域の中から PCI 割込みのためのテーブルを探します。し
  かし、テーブルが見つからない場合、pci=biosirq オプションをセットすれ
  ば、カーネルは PCI BIOS から同じ情報を得ようとします。

  まれなケースで ACPI 割込みが既にシステムに構成したいくつかの他のデバイ
  スと衝突してるかもしれません。衝突したデバイスを無効にするか、それを再
  構成するかしてみてください。割込みの衝突をチェックするには

       cat /proc/interrupts

  とし、その出力を調べてください。ただし PCI デバイスだけは、ACPI デバイ
  スと割込みを共有することができます――他のすべてのデバイスは、いくつか
  の他の割込みを使用しなければなりません。例として、著者のサンプル出力を
  記載します。

       [ariel@devel2 kernel]$ cat /proc/interrupts
                CPU0
         0:  5416567  XT-PIC  timer
         1:    55261  XT-PIC  keyboard
         2:        0  XT-PIC  cascade
         3:   364126  XT-PIC  wvlan_cs
         8:        7  XT-PIC  rtc
         9:      134  XT-PIC  ACPI, Ricoh Co Ltd RL5c478, Ricoh Co Ltd RL5c478 (#2)
        12:   602159  XT-PIC  PS/2 Mouse
        13:        1  XT-PIC  fpu
        14:   129102  XT-PIC  ide0
        15:        9  XT-PIC  ide1
       NMI:        0
       ERR:        0

  /proc/pci をちょっと調べると、２つの Ricoh デバイスが PCI バスのカード
  バスブリッジにあるのが見えています。このように PCI デバイスは気楽に同
  じ割込みを共有できます。

  あるユーザは IRQ 13 上に ACPI と fpu が見えていると報告してきました―
  ―これは本物の衝突のケースで、デバイスを正常に機能させたいなら、衝突を
  解決しなければなりません。

  3.  その他のドライバ情報

  3.1.  proc エントリとその使い方

  includes-AML-interpreter ドライバを使っているなら、この項を読んでくだ
  さい。

       /proc/sys/acpi/c2_exit_latency
       /proc/sys/acpi/c3_exit_latency

       これらはレベル２かレベル３のプロセッサのスリープ状態 (C2 か
       C3) から抜け出るための待ち時間を表します。これらは、次のよう
       に使うことができます。" 電源断 %n 経過するまで C2 でスリープ
       (%n は C3 に移行するまでの待ち時間として見積られてい
       る)・・・"。最初は無限大に設定されますが、C2 と C3 が有効に
       される時に FACP テーブル上の値によって決定されます。ドライバ
       が BIOS のテーブルを読めず、とあらかじめ定義した BIOS の変わ
       りのテーブルを信頼するなら、これらの値は無限大のままです。そ
       のときは、C2 と C3 状態を正常に有効にするためには、自分で妥
       当な値に変更しなければなりません。

       /proc/sys/acpi/c2_enter_latency
       /proc/sys/acpi/c3_enter_latency

       これらは C2 か C3 のスリープ状態に入るための待ち時間を表しま
       す。これらは非常に短く一定しています。最初は例外で無限大に
       なっています (だからこの状態には、はっきりと有効にするまで入
       りません)。

       /proc/sys/acpi/event

       このエントリを読むことで、BIOSによって通知された (有効になっ
       ている) ACPI イベントに関連付けられた 16 進数を見ることがで
       きます。一つのウィンドウで

       cat /proc/sys/acpi/event

       とし、もう一つのウィンドウで様々なボタンとキーの組合せを押し
       て見てください。それらのいくつかが ACPI イベントとして登録さ
  れていれば、イベントを見ることができ、どのように登録されてい
  るかわかります。ドライバはすべてのイベントを有効にしてはいま
  せん。現在 no-AML-interpreter ドライバの下で使用できるすべて
  のイベントを有効にする方法はありません。ドライバによって電源
  ボタンが有効になっていても、それは /proc/sys/acpid/event の
  下のイベントとして見えるだけです。

       /proc/sys/acpi/sleep

       これに書くことは、システムをスリープ状態に置く現在唯一の方法
       です――具体的に

       echo 1 > /proc/sys/acpi/sleep

       とすれば、S1 に入ります。

       警告――これをする前に、不要なプロセスを終了してください。
       ひょとしたら、目覚めのきっかけに想定されている様々なキーを押
       すことをシステムは認識しないかもしれません(著者のものは、現
       在のドライバでキーを押すことを認識しません)。

  no-AML-interpreter ドライバを使っているなら、この項を読んでください。

       ACPI の /proc エントリのほとんどは、通知です――いくつかは
       ACPI イベントを引き起こすのに使えます。それぞれ通知の詳細と
       使い方を記載します。

       /proc/sys/acpi/facp

       これは FACP テーブルのヘッダとボディにアクセスすることを許し
       ます。これを読むことで、ACPI の能力と現在の状態を分かるため
       に調査できるテーブルを見ることができます――書くことで、完全
       なテーブルのヘッダとボディの差し替え (普通はドライバにより完
       了しています) か、一つのレジスタの値の変更、のどちらかができ
       ます。FACP テーブルを読み、それを理解するためには、pmtools
       パッケージを使った方がいいでしょう。次のコマンドを実行してく
       ださい。

  acpitbl /proc/sys/acpi/facp

       幾分人間の読める形でテーブルのダンプが表示されます。

       /proc/sys/acpi/dsdt

       これは DSDT テーブルのヘッダとボディにアクセスすることを許し
       ます。例外はありますが、facp エントリの注釈と同じことがいえ
       ます。dsdt エントリを読み、それを理解するには、次のコマンド
       を実行するといいでしょう。

       acpitbl /proc/sys/acpi/dsdt

       とすれば、ヘッダが見え、

       cat /proc/sys/acpi/dsdt | acpidisasm

       とすれば (解釈された) AML を読めます。

       /proc/sys/acpi/pm1_enable

       このエントリを読むことで、どの電源管理イベントが有効にされて
       いるかみることができます。各々のイベントはビットマスクに対応
       しています――そのマスクに対応した値のビットがセットならイベ
       ントは有効で、オフならイベントは無効です。ACPI の実装でサポ
       ートしているすべての電源管理イベントを有効にするには、このエ
       ントリに "0xffffffff" を書きます。このエントリを呼んだ場合、
       たぶん値は 0xffffffff ではありません。なぜなら、すべての定義
       されたイベントがサポートされていないからです (もしサポートさ
       れたとすると、すべてのビットは使われるのかな？)。

  どのイベントをどのビットマスクに対応させるか決める方法
  は・・・

       /proc/sys/acpi/gpe_enable

       このエントリを読むことで、どの汎用イベントが有効にされている
       かみることができます。前述の pm1_enable と同じ方法でこのエン
       トリを操作できます。

       どのイベントをどのビットマスクに対応させるか決める方法
       は・・・

       /proc/sys/acpi/gpe_level

       このエントリを読むことで、汎用イベントがどのレベルなのか見る
       ことができます――このエントリに書くことはレベルを変更するこ
       とになります (詳細はセクション 4.7 のチャイルドイベントの
       ビットについての記述を見てください)。

       /proc/sys/acpi/event

       このエントリを読むことで、BIOSによって通知された (有効になっ
       ている) ACPI イベントに関連付けられた 16 進数を見ることがで
       きます。gp1_enable と pm1_enable に 0xffffffff を書くことで
       すべてのイベントを有効にしているなら、次いで一つのウィンドウ
       で

       cat /proc/sys/acpi/event

       とし、もう一つのウィンドウで様々なボタンとキーの組合せを押し
       て見てください。それらのいくつかが ACPI イベントとして登録さ
       れていれば、イベントを見ることができます。例えば、これは、電
       源ボタンが何かを見る一つの方法です。

       例として、著者の Sony VAIO で実行した結果を以下に示します。

       [root@devel2 kernel]# echo 0xffffffff > /proc/sys/acpi/pm1_enable
       [root@devel2 kernel]#  echo 0xffffffff > /proc/sys/acpi/gpe_enable
       [root@devel2 kernel]# cat /proc/sys/acpi/pm1_enable
       0x00000521
       [root@devel2 kernel]# cat /proc/sys/acpi/gpe_enable
       0x00000f01
       (press power button)
       [root@devel2 kernel]# cat /proc/sys/acpi/event
       0x00000001 0x00000000 0x0
       0x00000001 0x00000000 0x0
       0x00000000 0x00000200 0x0

       電源ボタンの押したことをみることができます――それは cat の
       最後の行です。

       /proc/sys/acpi/p_blk

       (仕様によれば) 各々のプロセッサのためにこれらの一つがありま
       す――例えば C2 か C3 の状態にプロセッサを置くような、プロ
       セッサの制御に使われます。ドライバはある瞬間をとらえると一つ
       のプロセッサだけをサポートしていますので、 /proc インター
       フェースにはこれらの一つの場所しかありません。ここに直接書く
       必要は絶対にありません――一つのスリープ状態からもう一つの状
       態に切り換える時、ドライバが書き込みます。

       /proc/sys/acpi/p_lvl2_lat
       /proc/sys/acpi/p_lvl3_lat

       これらはレベル２かレベル３のプロセッサのスリープ状態から抜け
       出るための待ち時間を表します。これらは、次のように使うことが
       できます。" 電源断 %n 経過するまで C2 でスリープ (%n は C3
       に移行するまでの待ち時間として見積られている)・・・"。最初は
       無限大に設定されますが、C2 と C3 が有効にされる時に FACP テ
       ーブル上の値によって決定されます。ドライバに 'chipset' オプ
       ションを使用するなら、これらの値は無限大に設定され、決して変
       更しません――C2 と C3 状態を正常に有効にするためには、自分
       で妥当な値に変更しなければなりません。同様に、ドライバがテー
       ブルを見つけることができず、チップセット情報の使用が失敗した
       なら、自分で値を設定しなければなりません。

  /proc/sys/acpi/enter_lvl2_lat
  /proc/sys/acpi/enter_lvl3_lat

       これらはレベル２かレベル３のスリープ状態に入るための待ち時間
       を表します。これらは非常に短く一定しています。最初は例外で無
       限大になっています (だからこの状態には、はっきりと有効にする
       まで入りません)。

       /proc/sys/acpi/s0_slp_typ
       /proc/sys/acpi/s1_slp_typ
       /proc/sys/acpi/s5_slp_typ

       これらは、いくつかの処理の後、正常にシステムを適切なスリープ
       状態 (S0, S1, S5) に置くために、pm1a_cnt と pm1b_cnt に詰め
       込む必要のある値を表します。ドライバはこれらを初期化しません
       ――acpid は BIOS を通してそれらを参照し、ドライバが受け取っ
       た値によってそれらを設定するかドライバにたずねます。 acpid
       に問題があり直接これらの値を設定したいなら、チップセットに
       よって推測し試すか、DSDT のダンプ ("acpidmp DSDT | acpidis-
       asm" のコマンドを使う) の出力から見つけることができま
       す。DSDT のダンプのこの項に関するところは次のようなものにな
       ります。

       00000013: Name _S0_ (\_S0_)
       00000018:   Package
       0000001a:     0x04
       0000001b:     0x05
       0000001d:     0x05
       0000001f:     0x00
       00000021:     0x00
       00000023: Name _S1_ (\_S1_)
       00000028:   Package
       0000002a:     0x04
       0000002b:     0x04
       0000002d:     0x04
       0000002f:     0x00
       00000031:     0x00
       00000033: Name _S3_ (\_S3_)
       00000038:   Package
       0000003a:     0x04
       0000003b:     0x01
       0000003d:     0x01
       0000003f:     0x00
       00000041:     0x00

       出力はたくさん続きます。各々のエントリの２番目と３番目のバイ
       トは、下記に示すログの値に対応します。

       acpid が動作しているなら、acpid が起動した時に /var/log/mes-
       sages に書き込むこれらの値を見ることができます。例として、著
       者のログエントリは以下のようになっています。

       Jun 11 00:51:02 devel2 acpid: S0 SLP_TYP (0x0505)
       Jun 11 00:51:02 devel2 acpid: S1 SLP_TYP (0x0404)
       Jun 11 00:51:02 devel2 acpid: S2 not supported
       Jun 11 00:51:02 devel2 acpid: S3 SLP_TYP (0x0101)
       Jun 11 00:51:02 devel2 acpid: S4 SLP_TYP (0x0000)
       Jun 11 00:51:02 devel2 acpid: S5 SLP_TYP (0x0000)

       そうです、おまけの数値２つを得れますが、現在の proc エントリ
       ではありません。

       /proc/sys/acpi/sleep

       これに書くことは、システムをスリープ状態に置く現在唯一の方法
       です――具体的に

       echo 1 > /proc/sys/acpi/sleep

       とすれば、S1 に入ります。

       警告――これをする前に、不要なプロセスを終了してください。
       ひょとしたら、目覚めのきっかけに想定されている様々なキーを押
       すことをシステムは認識しないかもしれません(著者のものは、現
       在のドライバでキーを押すことを認識しません)。

  3.2.  /var/log/messages 内の 'e820' からのメッセージの意味は何か？

  /var/log/messages 内に次のようなメッセージを見るかもしれません。

       e820: 000000000000f800 @ 0000000003ff0000 (ACPI data)
       e820: 0000000000000800 @ 0000000003fff800 (ACPI NVS)

  割込み 15 のサブファンクション e820 は、システムメモリマップを返すため
  に BIOS が引き起こしています。

  データ領域は、様々な ACPI テーブルが含まれます。テーブルの使用が終わっ
  たとき、 OS はこの領域を取り戻します。

  NVS は Non-Volatile-Sleeping Memory の略語です――これは S4 状態に入る
  前に OS が保存と復旧を行う領域として想定されています。この領域は決して
  取り戻されません。

  ログ内に ACPI のデータ領域が見えないなら、これはたぶん、ドライバがテー
  ブルを見つけられなかったことを表します。どうにか動作していると思われる
  なら、たぶんチップセット固有の情報を使っています。調査のためにブートオ
  プションを試みることができます (詳細は セクション 2.4 を見てくださ
  い)。

  4.  デバッグのこつとプログラミング情報

  4.1.  ドライバが正しく動作していない。いかにして何が悪いか解明するか？

  includes-AML-interpreter ドライバを使っているなら、この項を読んでくだ
  さい。

       最初にドライバが初期化を行っているか？/proc/sys/acpi エント
       リをチェックすることで確認できます。

       エントリがあれば、ドライバが BIOS のための ACPI テーブルを置
       いたか、チップセットに基づき推測したのか？ /var/log/messages
       内に 'ACPI: support found' のメッセージが見えるかどうかで確
       認できます――このメッセージが見えれば、ドライバは BIOS から
       テーブル情報を得ています。このメッセージが見えなくとも、ドラ
       イバは初期化をし、(PIIX4 か VIA のためにあらかじめ定義され
       た) チップセットに基づく情報を使っています。

       テーブルを使用しているなら、何を見てるのか？

       acpidmp DSDT | acpidisasm

       と

       acpidmp FACP | acpitbl

       のコマンドを使い調査します。

       電源ボタンを押すことが ACPI イベントとして登録されているか？
       チェックのために

       cat /proc/sys/acpi/events

       とし、監視してください――それからもう一つのウィンドウでパワ
       ーボタンを押します。変更が見えましたか？０でない値ですか？代
       わりに /var/log/messages に 'ACPI: EC GPE' のようなエントリ
       が見えますか？

       これは、ちょっとした予備的なチェックリストです――十分理解す
       ることを提案します。

  no-AML-interpreter ドライバを使っているなら、この項を読んでください。

       最初にドライバが初期化を行っているか？/proc/sys/acpi エント
       リをチェックすることで確認できます。

       エントリがあれば、ドライバが BIOS のための ACPI テーブルを置
       いたか、チップセットに基づき推測したのか？ドライバの tables
       オプションを使い、ドライバが初期化していることを見れば確認で
       きます。

       テーブルを使用しているなら、何を見てるのか？

       acpidmp DSDT | acpidisasm

       と

       acpidmp FACP | acpitbl

       のコマンドを使い調査します。

       acpid が起動してるなら、それに質問してから、ホストを停止しま
       す。電源オフは実際に動作しますか (またはコンソールに 'Power
  off' と表示しそのままですか)？

       電源ボタンを押すことが ACPI イベントとして登録されているか？
       チェックのために

       echo "0xffffffff" > /proc/sys/acpi/pm1_enable
       echo 0xffffffff > /proc/sys/acpi/gpe_enable

       とします。この時、一つのウィンドウで

       cat /proc/sys/acpi/events

       とし、監視してください――それからもう一つのウィンドウでパワ
       ーボタンを押します。変更が見えましたか？０でない値ですか？

       これは、ちょっとした予備的なチェックリストです――十分理解す
       ることを提案します。

  4.2.  役立つバグレポートの提出

  ACPI バグを報告するのであれば、どうか以下の情報を含んでください。

  1) 使用しているシステムの情報
     (マザーボード、チップセット、BIOS、システムベンダ)
  2) カーネルログからの関連情報
       dmesg | grep -iE 'version|acpi|apm|e820' > kernel.log
     とし、関連する行を得ます。
  3) 実際に経験した問題の詳細と可能ならその再現方法
  4) acpidmp の出力
       acpidmp > acpidmp.log
     とし、入手します。acpidmp は pmtools パッケージの一部でセクション 2.3 で
     説明しています。

  no-AML-interpreter ドライバを使っているなら、

  5) デバッグオプションを有効にした acpid の出力
       acpid -d >& acpid.log
     とし入手します。acpid がクラッシュした場合に限り、上記に代えて
       acpid -dt >& acpid.log
     とし入手したフルデバッグトレースを送ってください。
     注意してください。これは非常に大きくなります。

  includes-AML-interpreter ドライバを使っているなら、

  5) デバッグオプションを有効にした acpid の出力
       acpid -d >& acpid.log
     とし入手します。

  6) バグレポートとログファイルをまとめます。
       tar cvf - bugreport.txt *.log | gzip -9 > bug.tar.gz
     とし、それら (添付ファイルを好みます) を <tt/andy_henroid@yahoo.com/ に
     メールします。
  7) ACPI4Linux メーリングリスト (<tt/acpi@phobos.fs.tum.de/) にもバグレポートを
     転送すべきです。ですが、ログファイルは送らないでください。これらはかなり
     大きく、たくさんの人が MULTI-MEGABYTE MAILING LIST MESSAGES のために迷惑を
     蒙ります。

  4.3.  Linux のデバイスドライバを書く人のための指針

  コールのための追加情報は Documentation/pm.txt のファイルを参照してくだ
  さい。これらのコールは、APM か ACPI のどちらか一方と一緒に動作します。
  簡単に説明します。

  1. "pm_register" コールにより、デバイスの各々のインスタンスを登録しま
     す。

  2. ハードウェアにアクセスする前に "pm_access" をコールします (これは確
     実にハードウェアを起こし準備させます)。

  3. サスペンド状態 (ACPI D1-D3) に移行する前か、サスペンドからのリジュ
     ーム (ACPI D0) の後にあなたの "pm_callback" はコールされます。

  4. デバイスを使用しなくなったとき、"pm_dev_idle" をコールします (コー
     ルするかは任意ですが、コールすればデバイスのアイドル検出は改善しま
     す)。

  5. アンロードするとき、"pm_unregister" コールにより、デバイスを未登録
     にします。

  5.  準備中

  6.  クレジットとライセンス情報

  6.1.  クレジット

  この情報の多くは ACPI メーリングリストを通じ探し回り手に入れました。特
  に Andy Henroid 氏のメールはすこぶる有益な情報でした。このドキュメント
  の一部分はドライバに含まれるファイル pm.txt から取って来ました―
  ―pm.txt も Andy 氏の働きです。バグレポートの情報は、acpid パッケージ
  と一緒に提供される文書から持ってきています。これもまた Andy 氏によりま
  す。Michael Johnson 氏によるバグレポートはドライバをよく理解する上で役
  に立ちました。最後に、臆面もなく、私は最初のドラフトを書き始める前の夕
  方の早くに David Hinds 氏の PCMCIA-HOWTO を見つけたので、このドキュメ
  ントのための枠組みを盗んでしまいました。

  6.2.  GNU Free Documentation License

                  GNU Free Documentation License
                     Version 1.1, March 2000

   Copyright (C) 2000  Free Software Foundation, Inc.
       59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
   Everyone is permitted to copy and distribute verbatim copies
   of this license document, but changing it is not allowed.

  0. PREAMBLE

  The purpose of this License is to make a manual, textbook, or other
  written document "free" in the sense of freedom: to assure everyone
  the effective freedom to copy and redistribute it, with or without
  modifying it, either commercially or noncommercially.  Secondarily,
  this License preserves for the author and publisher a way to get
  credit for their work, while not being considered responsible for
  modifications made by others.

  This License is a kind of "copyleft", which means that derivative
  works of the document must themselves be free in the same sense.  It
  complements the GNU General Public License, which is a copyleft
  license designed for free software.

  We have designed this License in order to use it for manuals for free
  software, because free software needs free documentation: a free
  program should come with manuals providing the same freedoms that the
  software does.  But this License is not limited to software manuals;
  it can be used for any textual work, regardless of subject matter or
  whether it is published as a printed book.  We recommend this License
  principally for works whose purpose is instruction or reference.

  1. APPLICABILITY AND DEFINITIONS

  This License applies to any manual or other work that contains a
  notice placed by the copyright holder saying it can be distributed
  under the terms of this License.  The "Document", below, refers to any
  such manual or work.  Any member of the public is a licensee, and is
  addressed as "you".

  A "Modified Version" of the Document means any work containing the
  Document or a portion of it, either copied verbatim, or with
  modifications and/or translated into another language.

  A "Secondary Section" is a named appendix or a front-matter section of
  the Document that deals exclusively with the relationship of the
  publishers or authors of the Document to the Document's overall subject
  (or to related matters) and contains nothing that could fall directly
  within that overall subject.  (For example, if the Document is in part a
  textbook of mathematics, a Secondary Section may not explain any
  mathematics.)  The relationship could be a matter of historical
  connection with the subject or with related matters, or of legal,
  commercial, philosophical, ethical or political position regarding
  them.

  The "Invariant Sections" are certain Secondary Sections whose titles
  are designated, as being those of Invariant Sections, in the notice
  that says that the Document is released under this License.

  The "Cover Texts" are certain short passages of text that are listed,
  as Front-Cover Texts or Back-Cover Texts, in the notice that says that
  the Document is released under this License.

  A "Transparent" copy of the Document means a machine-readable copy,
  represented in a format whose specification is available to the
  general public, whose contents can be viewed and edited directly and
  straightforwardly with generic text editors or (for images composed of
  pixels) generic paint programs or (for drawings) some widely available
  drawing editor, and that is suitable for input to text formatters or
  for automatic translation to a variety of formats suitable for input
  to text formatters.  A copy made in an otherwise Transparent file
  format whose markup has been designed to thwart or discourage
  subsequent modification by readers is not Transparent.  A copy that is
  not "Transparent" is called "Opaque".

  Examples of suitable formats for Transparent copies include plain
  ASCII without markup, Texinfo input format, LaTeX input format, SGML
  or XML using a publicly available DTD, and standard-conforming simple
  HTML designed for human modification.  Opaque formats include
  PostScript, PDF, proprietary formats that can be read and edited only
  by proprietary word processors, SGML or XML for which the DTD and/or
  processing tools are not generally available, and the
  machine-generated HTML produced by some word processors for output
  purposes only.

  The "Title Page" means, for a printed book, the title page itself,
  plus such following pages as are needed to hold, legibly, the material
  this License requires to appear in the title page.  For works in
  formats which do not have any title page as such, "Title Page" means
  the text near the most prominent appearance of the work's title,
  preceding the beginning of the body of the text.

  2. VERBATIM COPYING

  You may copy and distribute the Document in any medium, either
  commercially or noncommercially, provided that this License, the
  copyright notices, and the license notice saying this License applies
  to the Document are reproduced in all copies, and that you add no other
  conditions whatsoever to those of this License.  You may not use
  technical measures to obstruct or control the reading or further
  copying of the copies you make or distribute.  However, you may accept
  compensation in exchange for copies.  If you distribute a large enough
  number of copies you must also follow the conditions in section 3.

  You may also lend copies, under the same conditions stated above, and
  you may publicly display copies.

  3. COPYING IN QUANTITY

  If you publish printed copies of the Document numbering more than 100,
  and the Document's license notice requires Cover Texts, you must enclose
  the copies in covers that carry, clearly and legibly, all these Cover
  Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
  the back cover.  Both covers must also clearly and legibly identify
  you as the publisher of these copies.  The front cover must present
  the full title with all words of the title equally prominent and
  visible.  You may add other material on the covers in addition.
  Copying with changes limited to the covers, as long as they preserve
  the title of the Document and satisfy these conditions, can be treated
  as verbatim copying in other respects.

  If the required texts for either cover are too voluminous to fit
  legibly, you should put the first ones listed (as many as fit
  reasonably) on the actual cover, and continue the rest onto adjacent
  pages.

  If you publish or distribute Opaque copies of the Document numbering
  more than 100, you must either include a machine-readable Transparent
  copy along with each Opaque copy, or state in or with each Opaque copy
  a publicly-accessible computer-network location containing a complete
  Transparent copy of the Document, free of added material, which the
  general network-using public has access to download anonymously at no
  charge using public-standard network protocols.  If you use the latter
  option, you must take reasonably prudent steps, when you begin
  distribution of Opaque copies in quantity, to ensure that this
  Transparent copy will remain thus accessible at the stated location
  until at least one year after the last time you distribute an Opaque
  copy (directly or through your agents or retailers) of that edition to
  the public.

  It is requested, but not required, that you contact the authors of the
  Document well before redistributing any large number of copies, to give
  them a chance to provide you with an updated version of the Document.

  4. MODIFICATIONS

  You may copy and distribute a Modified Version of the Document under
  the conditions of sections 2 and 3 above, provided that you release
  the Modified Version under precisely this License, with the Modified
  Version filling the role of the Document, thus licensing distribution
  and modification of the Modified Version to whoever possesses a copy
  of it.  In addition, you must do these things in the Modified Version:

  A. Use in the Title Page (and on the covers, if any) a title distinct
     from that of the Document, and from those of previous versions
     (which should, if there were any, be listed in the History section
     of the Document).  You may use the same title as a previous version
     if the original publisher of that version gives permission.
  B. List on the Title Page, as authors, one or more persons or entities
     responsible for authorship of the modifications in the Modified
     Version, together with at least five of the principal authors of the
     Document (all of its principal authors, if it has less than five).
  C. State on the Title page the name of the publisher of the
     Modified Version, as the publisher.
  D. Preserve all the copyright notices of the Document.
  E. Add an appropriate copyright notice for your modifications
     adjacent to the other copyright notices.
  F. Include, immediately after the copyright notices, a license notice
     giving the public permission to use the Modified Version under the
     terms of this License, in the form shown in the Addendum below.
  G. Preserve in that license notice the full lists of Invariant Sections
     and required Cover Texts given in the Document's license notice.
  H. Include an unaltered copy of this License.
  I. Preserve the section entitled "History", and its title, and add to
     it an item stating at least the title, year, new authors, and
     publisher of the Modified Version as given on the Title Page.  If
     there is no section entitled "History" in the Document, create one
     stating the title, year, authors, and publisher of the Document as
     given on its Title Page, then add an item describing the Modified
     Version as stated in the previous sentence.
  J. Preserve the network location, if any, given in the Document for
     public access to a Transparent copy of the Document, and likewise
     the network locations given in the Document for previous versions
     it was based on.  These may be placed in the "History" section.
     You may omit a network location for a work that was published at
     least four years before the Document itself, or if the original
     publisher of the version it refers to gives permission.
  K. In any section entitled "Acknowledgements" or "Dedications",
     preserve the section's title, and preserve in the section all the
     substance and tone of each of the contributor acknowledgements
     and/or dedications given therein.
  L. Preserve all the Invariant Sections of the Document,
     unaltered in their text and in their titles.  Section numbers
     or the equivalent are not considered part of the section titles.
  M. Delete any section entitled "Endorsements".  Such a section
     may not be included in the Modified Version.
  N. Do not retitle any existing section as "Endorsements"
     or to conflict in title with any Invariant Section.

  If the Modified Version includes new front-matter sections or
  appendices that qualify as Secondary Sections and contain no material
  copied from the Document, you may at your option designate some or all
  of these sections as invariant.  To do this, add their titles to the
  list of Invariant Sections in the Modified Version's license notice.
  These titles must be distinct from any other section titles.

  You may add a section entitled "Endorsements", provided it contains
  nothing but endorsements of your Modified Version by various
  parties--for example, statements of peer review or that the text has
  been approved by an organization as the authoritative definition of a
  standard.

  You may add a passage of up to five words as a Front-Cover Text, and a
  passage of up to 25 words as a Back-Cover Text, to the end of the list
  of Cover Texts in the Modified Version.  Only one passage of
  Front-Cover Text and one of Back-Cover Text may be added by (or
  through arrangements made by) any one entity.  If the Document already
  includes a cover text for the same cover, previously added by you or
  by arrangement made by the same entity you are acting on behalf of,
  you may not add another; but you may replace the old one, on explicit
  permission from the previous publisher that added the old one.

  The author(s) and publisher(s) of the Document do not by this License
  give permission to use their names for publicity for or to assert or
  imply endorsement of any Modified Version.

  5. COMBINING DOCUMENTS

  You may combine the Document with other documents released under this
  License, under the terms defined in section 4 above for modified
  versions, provided that you include in the combination all of the
  Invariant Sections of all of the original documents, unmodified, and
  list them all as Invariant Sections of your combined work in its
  license notice.

  The combined work need only contain one copy of this License, and
  multiple identical Invariant Sections may be replaced with a single
  copy.  If there are multiple Invariant Sections with the same name but
  different contents, make the title of each such section unique by
  adding at the end of it, in parentheses, the name of the original
  author or publisher of that section if known, or else a unique number.
  Make the same adjustment to the section titles in the list of
  Invariant Sections in the license notice of the combined work.

  In the combination, you must combine any sections entitled "History"
  in the various original documents, forming one section entitled
  "History"; likewise combine any sections entitled "Acknowledgements",
  and any sections entitled "Dedications".  You must delete all sections
  entitled "Endorsements."

  6. COLLECTIONS OF DOCUMENTS

  You may make a collection consisting of the Document and other documents
  released under this License, and replace the individual copies of this
  License in the various documents with a single copy that is included in
  the collection, provided that you follow the rules of this License for
  verbatim copying of each of the documents in all other respects.

  You may extract a single document from such a collection, and distribute
  it individually under this License, provided you insert a copy of this
  License into the extracted document, and follow this License in all
  other respects regarding verbatim copying of that document.

  7. AGGREGATION WITH INDEPENDENT WORKS

  A compilation of the Document or its derivatives with other separate
  and independent documents or works, in or on a volume of a storage or
  distribution medium, does not as a whole count as a Modified Version
  of the Document, provided no compilation copyright is claimed for the
  compilation.  Such a compilation is called an "aggregate", and this
  License does not apply to the other self-contained works thus compiled
  with the Document, on account of their being thus compiled, if they
  are not themselves derivative works of the Document.

  If the Cover Text requirement of section 3 is applicable to these
  copies of the Document, then if the Document is less than one quarter
  of the entire aggregate, the Document's Cover Texts may be placed on
  covers that surround only the Document within the aggregate.
  Otherwise they must appear on covers around the whole aggregate.

  8. TRANSLATION

  Translation is considered a kind of modification, so you may
  distribute translations of the Document under the terms of section 4.
  Replacing Invariant Sections with translations requires special
  permission from their copyright holders, but you may include
  translations of some or all Invariant Sections in addition to the
  original versions of these Invariant Sections.  You may include a
  translation of this License provided that you also include the
  original English version of this License.  In case of a disagreement
  between the translation and the original English version of this
  License, the original English version will prevail.

  9. TERMINATION

  You may not copy, modify, sublicense, or distribute the Document except
  as expressly provided for under this License.  Any other attempt to
  copy, modify, sublicense or distribute the Document is void, and will
  automatically terminate your rights under this License.  However,
  parties who have received copies, or rights, from you under this
  License will not have their licenses terminated so long as such
  parties remain in full compliance.

  10. FUTURE REVISIONS OF THIS LICENSE

  The Free Software Foundation may publish new, revised versions
  of the GNU Free Documentation License from time to time.  Such new
  versions will be similar in spirit to the present version, but may
  differ in detail to address new problems or concerns. See
  http:///www.gnu.org/copyleft/.

  Each version of the License is given a distinguishing version number.
  If the Document specifies that a particular numbered version of this
  License "or any later version" applies to it, you have the option of
  following the terms and conditions either of that specified version or
  of any later version that has been published (not as a draft) by the
  Free Software Foundation.  If the Document does not specify a version
  number of this License, you may choose any version ever published (not
  as a draft) by the Free Software Foundation.
  ADDENDUM: How to use this License for your documents

  To use this License in a document you have written, include a copy of
  the License in the document and put the following copyright and
  license notices just after the title page:

        Copyright (c)  YEAR  YOUR NAME.
        Permission is granted to copy, distribute and/or modify this document
        under the terms of the GNU Free Documentation License, Version 1.1
        or any later version published by the Free Software Foundation;
        with the Invariant Sections being LIST THEIR TITLES, with the
        Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.
        A copy of the license is included in the section entitled "GNU
        Free Documentation License".

  If you have no Invariant Sections, write "with no Invariant Sections"
  instead of saying which ones are invariant.  If you have no
  Front-Cover Texts, write "no Front-Cover Texts" instead of
  "Front-Cover Texts being LIST"; likewise for Back-Cover Texts.

  If your document contains nontrivial examples of program code, we
  recommend releasing these examples in parallel under your choice of
  free software license, such as the GNU General Public License,
  to permit their use in free software.

  7.  日本語訳について

  翻訳に関するご意見は JF プロジェクト <JF@linux.or.jp> 宛に連絡してくだ
  さい。

     v 0.1cj
        翻訳: 野本浩一 <hng@ps.ksky.ne.jp>

        校正:
        後藤雅晴さん <magotou@town.yachiyo.hyogo.jp>

