setpci(8)

名前
setpci - PCI デバイスを設定する

書式
setpci [options] devices operations...

説明

setpci は PCI デバイスの情報を取得したり設定したりするユーティリティである。 全ての数値は 16 進数表記で入力される。

オプション

-v  setpci に状況を詳細に報告させ、設定空間アクセスの詳細な情報を表示させる。

-f  (デバイスが選択されなかったり) 何もすることがなくても、 setpci にエラーを表示させない。 このオプションは広く配布されている設定スクリプトで使うことを意図している。 この設定スクリプトでは、問題としているデバイスが マシンに存在するか否かが確かでないためである。

-D  「デモモード」 -- 実際に実行しないで設定空間アクセスをシミュレートする。 setpci -vD を試してみると、実際に実行する前に どれだけ複雑な setpci 操作のシーケンスが実行されるかを見ることができて、役に立つ。

--version
    setpci のバージョンを表示する。 このオプションは単独で使用すべきである。

デバイスの選択

操作のシーケンスの前に、操作の対象としたいデバイスを選択する必要がある。

-s [[<bus>]:][<slot>][.[<func>]]
    指定されたバス (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 を書き込む。

関連項目
lspci(8)

作者
Linux PCI Utilities は Martin Mares <mj@ucw.cz> によって保守されている。