setpci - システム管理コマンドの説明 - Linux コマンド集 一覧表
名前
setpci - PCI デバイスを設定する
書式
setpci [ options ] devices operations ...
説明
setpci
は PCI デバイスの情報を取得したり設定したりするユーティリティである。
全ての数値は 16 進数表記で入力される。
オプション
- -v
- setpci に情況を詳細に報告させ、設定空間アクセスの詳細な情報を表示させる。
- -f
- (デバイスが選択されなかったり) 何もすることがなくても、 setpci にエラーを表示させない。 このオプションは広く配布されている設定スクリプトで使うことを意図している。 この設定スクリプトでは、問題としているデバイスが マシンに存在するか否かが確かでないためである。
- -D
- 「デモモード」 -- 実際に実行しないで設定空間アクセスをシミュレートする。 setpci -vD を試してみると、実際に実行する前に どれだけ複雑な setpci 操作のシーケンスが実行されるかを見ることができて、役に立つ。
- --version
- setpci のバージョンを表示する。 このオプションは単独で使用すべきである。
デバイスの選択
操作のシーケンスの前に、操作の対象としたいデバイスを選択する必要がある。
- -s
- 指定されたバス (bus)・スロット (slot)・機能 (func) のデバイスを選択する。 デバイスの指定の各要素は省略可能で、また "*" は「任意の値」を意味する。 全ての数値は 16 進数で入力する。 例えば、"0:" はバス 0 の全てのデバイスを、 "0" は全てのバスのデバイス 0 で全ての機能を意味し、 "0.3" は全てのバスのデバイス 0 で 3 番目の機能を選択し、 ".4" は各デバイスの 4 番目の機能を選択する。
- -d [<vendor>]:[<device>]
- 指定されたベンダ ID とデバイス ID を持つデバイスを選択する。 両 ID とも 16 進で与えられる。省略も可能である。 また、「任意の値」を意味する "*" を指定することも可能である。
操作
設定レジスタの値を取得するには、単に名前を指定すること (名前を入力してもよいし、 レジスタのアドレスを入力してもよい。 レジスタのアドレスには、オプションとして .B , .W, .L というバイト・ワード・ロングワードのレジスタ長を指定する サフィックスを付けることもできる)。
レジスタを設定するには reg = values と書くこと。 ここで reg はレジスタの情報を取得するのに使ったのと同じ書式であり、 values は指定したアドレスを開始点として書き込むコンマ区切りの値のリストである。
レジスタ名
setpci は以下の設定レジスタ名を認識する。 これらの正確な意味については、PCI バスの仕様を参照するか、 /usr/include/linux/pci.h にあるいくつかのコメントを見よ。
VENDOR_ID DEVICE_ID COMMAND STATUS REVISION CLASS_PROG CLASS_DEVICE CACHE_LINE_SIZE LATENCY_TIMER HEADER_TYPE BIST BASE_ADDRESS_0 BASE_ADDRESS_1 BASE_ADDRESS_2 BASE_ADDRESS_3 BASE_ADDRESS_4 BASE_ADDRESS_5 CARDBUS_CIS SUBSYSTEM_VENDOR_ID SUBSYSTEM_ID ROM_ADDRESS INTERRUPT_LINE INTERRUPT_PIN MIN_GNT MAX_LAT PRIMARY_BUS SECONDARY_BUS SUBORDINATE_BUS SEC_LATENCY_TIMER IO_BASE IO_LIMIT SEC_STATUS MEMORY_BASE MEMORY_LIMIT PREF_MEMORY_BASE PREF_MEMORY_LIMIT PREF_BASE_UPPER32 PREF_LIMIT_UPPER32 IO_BASE_UPPER16 IO_LIMIT_UPPER16 BRIDGE_ROM_ADDRESS BRIDGE_CONTROL CB_CARDBUS_BASE CB_CAPABILITIES CB_SEC_STATUS CB_BUS_NUMBER CB_CARDBUS_NUMBER CB_SUBORDINATE_BUS CB_CARDBUS_LATENCY CB_MEMORY_BASE_0 CB_MEMORY_LIMIT_0 CB_MEMORY_BASE_1 CB_MEMORY_LIMIT_1 CB_IO_BASE_0 CB_IO_BASE_0_HI CB_IO_LIMIT_0 CB_IO_LIMIT_0_HI CB_IO_BASE_1 CB_IO_BASE_1_HI CB_IO_LIMIT_1 CB_IO_LIMIT_1_HI CB_SUBSYSTEM_VENDOR_ID CB_SUBSYSTEM_ID CB_LEGACY_MODE_BASE
PCILIB オプション
PCI utilities は PCI カードとやりとりをするために PCILIB (PCI 設定空間にアクセスするための機能を提供する、 プラットフォームに依存せず移植性の高いライブラリ) を用いている。 デフォルトでは、PCILIB はアクセス方法で可能なもののうち最初のものを用い、 何らデバッグメッセージを表示しない。 各々のスイッチには、そのスイッチに対応している ハードウェア/ソフトウェアの設定リストが付随する。
- -P <dir>
- /proc/bus/pci の代わりに、 <dir>を使った Linux /proc/bus/pci スタイルの設定でアクセスを行わせる。 (Linux 2.1 またはそれ以降でのみ有効)
- -H1
- インテル設定メカニズム 1 (Intel configuration mechanism 1) を使って、 ハードウェアに直接アクセスする。(i386 及びその互換でのみ有効)
- -H2
- インテル設定メカニズム 2 (Intel configuration mechanism 2) を使って、 ハードウェアに直接アクセスする。 警告: この方法では各バスの最初の 16 デバイスしか扱えず、 多くの場合殆んど信頼できない。(i386 及びその互換でのみ有効)
- -S
- PCI アクセスシステムコールを使う。(Alpha/Linux と UltraSparc でのみ有効)
- -F <file>
- lspci -x の実行結果を格納しているファイルから、全ての情報を取り出す。 ユーザーから提供されたバグ報告の解析に役立つ。 なぜならば、さらなるダンプをユーザーに要求する事なく、 ハードウェアの設定をあなたの好きなやり方で表示する事ができる。 (全てのシステムで有効)
- -G
- ライブラリのデバッグレベルを上げる。(全てのシステムで有効)
例
`setpci -d *:* latency_timer=40' レイテンシタイマを 64 (16 進数の 40) に設定する。
`setpci -s 0 device_id vendor_id' 全てのバスのスロット 0 にある デバイスの ID をリストする。
`setpci -s 12:3.4 3c.l=1,2,3' バス 12・スロット 3・機能 4 のデバイスの レジスタ 3c にロングワード 1、レジスタ 3d に 2、 レジスタ 3e に 3 を書き込む。
関連項目
著者
Linux PCI Utilities は Martin Mares <mj@ucw.cz> に
よって保守されている。