Introduction
このドキュメントは、man lspci
の内容をできるだけ分かりやすく翻訳し、必要に応じて補足情報を追加しています。
NAME
lspci は、すべての PCI デバイスをリストアップします。
SYNOPSIS
lspci [options]
DESCRIPTION
lspci は、システム内の PCI バスとそれに接続されたデバイスに関する情報を表示するユーティリティです。
デフォルトでは、デバイスの簡略なリストを表示します。他のプログラムで解析するためのより詳細な出力、または出力を要求するには、以下で説明するオプションを使用してください。
PCI デバイスドライバや lspci 自体のバグを報告する場合は、lspci -vvx
または lspci -vvxxx
の出力を含めることが推奨されます。ただし、以下の注意点を確認してください。
特に高度な詳細モードの出力は、経験豊富な PCI ハッカーにしか理解できない可能性があります。フィールドの正確な定義については、PCI 仕様書または header.h
および /usr/include/linux/pci.h
のインクルードファイルを参照してください。
多くのオペレーティングシステムで、PCI 設定空間の一部にアクセスする権限は root に制限されているため、通常のユーザーが利用できる lspci の機能は制限されています。ただし、lspci はできる限り表示しようと努力し、制限された情報を <access denied>
テキストでマークします。
OPTIONS
Basic display modes
-m
PCI デバイスデータを後方互換性のある機械可読形式でダンプします。
-mm
スクリプトによる簡単な解析のために、PCI デバイスデータを機械可読形式でダンプします。
-t
すべてのバス、ブリッジ、デバイス、およびそれらの間の接続を含むツリー状の図を表示します。
Display options
-v
(よく使う)
詳細情報を表示し、すべてのデバイスに関する詳細情報を表示します。
-vv
-v
よりも多くの詳細を表示します。有用と見なされるすべてが含まれます。
-vvv
-vv
よりも多くの詳細を表示します。解析可能なすべての情報を表示します。
-k
各デバイスを処理するカーネルドライバおよびそれを処理できるカーネルモジュールを表示します。通常の出力モードで -v
が指定されている場合はデフォルトで有効になります。現在は、Linux のカーネルバージョン 2.6 以降でのみ動作します。
-x
構成空間の標準部分の 16 進ダンプ(最初の 64 バイト、または CardBus ブリッジの場合は 128 バイト)を表示します。
-xxx
PCI 構成空間全体の 16 進ダンプを表示します。一部の構成空間を読み取ろうとすると、いくつかの PCI デバイスがクラッシュするため、root ユーザーのみが利用できます。ただし、そのようなデバイスは稀です。
-xxxx
PCI-X 2.0 および PCI Express バスで利用可能な拡張(4096 バイト)PCI 構成空間の 16 進ダンプを表示します。
-b
PCI バス上のカードが見る IRQ 番号とアドレスを、カーネルが見るものではなく、PCI バス上で見るものとして表示します。
-D
(よく使う)
常に PCI ドメイン番号を表示します。デフォルトでは、ドメイン 0 のみを持つマシンでは表示されません。
-P
各ブリッジを通過するパスによって PCI デバイスを識別します。バス番号ではなく、ブリッジを通過するパスで識別します。
-PP
各ブリッジを通過するパスによって PCI デバイスを識別します。バス番号とデバイス番号の両方を表示します。
Options to control resolving ID’s to names
-n
PCI ベンダーコードとデバイスコードを番号で表示し、ローカルの PCI ID リストで検索せずに表示します。
-nn
(よく使う)
PCI ベンダーコードとデバイスコードを番号と名前の両方で表示します。
-q
ローカルの pci.ids
ファイルにデバイスが見つからない場合、インターネット上のの PCI ID データベースに DNS 経由で問い合わせます。DNS クエリが成功すると、その結果は ~/.pciids-cache
にキャッシュされ、その後の実行では -q
オプションを指定しなくても認識されます。ただし、PCI ID データベースの負荷を軽減するため、このオプションは自動化されたスクリプト内での使用に注意してください。
-qq
-q
と同様ですが、ローカルキャッシュがリセットされます。
-Q
ローカルで認識されたエントリでも、中央データベースをクエリします。表示されたエントリが間違っていると疑われる場合に使用します。
Options for selection of devices
-s [[[[<domain>]:]<bus>]:][<device>][.[<func>]]
(よく使う)
指定されたドメイン番号、バス番号、デバイス番号、ファンクション番号を持つデバイスのみを表示します。以下の例では、0000:00:05.0
が各項目に対応しています。
myadmin@ubuntu:~$ sudo lspci -D -s 0000:00:05.0 -d 1af4:1000:0200 -nn
0000:00:05.0 Ethernet controller [0200]: Red Hat, Inc. Virtio network device [1af4:1000]
項目 | 説明 |
---|---|
domain(ドメイン番号) | 4 桁の 16 進数 (0000-ffff) で指定します。マシンが複数のホストブリッジを持つ場合、それぞれのホストブリッジが独自の PCI ドメインをアドレス指定できます。 |
bus(バス番号) | 2 桁の 16 進数 (00-ff) で指定します。 |
device(デバイス番号) | 2 桁の 16 進数 (00-ff) で指定します。 |
func(ファンクション番号) | 1 桁の 16 進数 (0-f) で指定します。 |
-s
オプションで指定可能な値-d [<vendor>]:[<device>][:<class>]
(よく使う)
指定したベンダー ID、デバイス ID、クラス ID を持つデバイスのみを表示します。以下の例では、1af4:1000:0200
が各項目に対応しています。
myadmin@ubuntu:~$ sudo lspci -D -s 0000:00:05.0 -d 1af4:1000:0200 -nn
0000:00:05.0 Ethernet controller [0200]: Red Hat, Inc. Virtio network device [1af4:1000]
項目 | 説明 |
---|---|
vendor(ベンダー ID) | 4 桁の 16 進数 (0000-ffff) で指定します。 |
device(デバイス ID) | 4 桁の 16 進数 (0000-ffff) で指定します。 |
class(クラス ID) | 4 桁の 16 進数 (0000-ffff) で指定します。 |
-d
オプションで指定可能な値Other options
-i
<file>
指定されたファイルを、PCI ID リストとして使用します。このオプションを使用しない場合、/usr/share/misc/pci.ids
が使用されます。
-p
<file>
指定されたファイルをカーネルモジュールが処理する PCI ID のマップとして使用します。このオプションを使用しない場合、/lib/modules/kernel_version/modules.pcimap
が使用されます。このオプションは、十分に新しいモジュールツールを持つ Linux システムにのみ適用されます。
-M
バスマッピングモードを呼び出し、すべての PCI デバイスを徹底的にスキャンします。これには、設定ミスのあるブリッジなど、すべての PCI デバイスが含まれます。このオプションは、通常、ルート権限が必要な直接ハードウェアアクセスモードでのみ意味のある結果を提供します。バスマッパーは、PCI ドメイン 0 のみをスキャンします。
--version
lspci のバージョンを表示します。
PCI access options
PCI ユーティリティは、PCI デバイスと通信するために PCI ライブラリを使用します。この挙動を変更するには、以下のオプションを使用できます。
-A
<method>
PCI ハードウェアにアクセスするためのさまざまな方法がサポートされています。デフォルトでは、最初に利用可能なアクセス方法が使用されますが、このオプションを使用してこの決定を上書きすることができます。
-O
<param>=<value>
ライブラリの動作はいくつかの名前付きパラメータによって制御されます。このオプションを使用すると、これらのパラメータのいずれかの値を設定できます。
-H1
インテル構成メカニズム 1 を介した直接ハードウェアアクセスを使用します。これは、-A intel-conf1
の短縮形です。
-H2
-H2
インテル構成メカニズム 2 を介した直接ハードウェアアクセスを使用します。これは、-A intel-conf2
の短縮形です。
-F
<file>
実際のハードウェアにアクセスする代わりに、以前の lspci -x
の実行で生成された指定されたファイルからデバイスのリストとその構成レジスタの値を読み取ります。これは、ユーザーからのバグレポートの分析に非常に役立ちます。ハードウェア構成をユーザーに追加のダンプの要求なしに任意の方法で表示できます。
-G
-G
ライブラリのデバッグレベルを増やします。
MACHINE READABLE OUTPUT
lspci
の出力を自動的に処理する予定がある場合は、このセクションで説明されている機械可読な出力形式 (-m
, -vm
, -vmm
) のいずれかを使用してください。その他のすべての形式は、lspci
のバージョン間で変更される可能性があります。すべての数値は常に 16 進数で表示されます。名前の代わりに数値の ID を処理する場合は、-n
スイッチを追加してください。
Simple format (-m
)
単純な形式では、各デバイスが 1 行に記述され、それはシェルスクリプトに渡すのに適したパラメータとしてフォーマットされます。つまり、必要に応じて引用符で囲まれ、エスケープされた値が空白で区切られます。いくつかの引数は位置指定されています: スロット、クラス、ベンダー名、デバイス名、サブシステムのベンダー名、およびサブシステム名(デバイスにサブシステムがない場合は最後の 2 つが空になります)。残りの引数はオプションのようです:
-rrev
: リビジョン番号。-pprogif
: プログラミングインターフェース。
位置指定された引数とオプションの相対的な順序は定義されていません。将来のバージョンで新しいオプションが追加される可能性がありますが、それらは常にオプションとスペースで区切られていない単一の引数を持ちますので、認識されない場合は簡単に無視できます。
Verbose format (-vmm
)
詳細な出力は、空白行で区切られたレコードのシーケンスです。各レコードは、1 つのデバイスを説明する一連の行で構成され、各行には 1 つの tag: value ペアが含まれます。タグと値は 1 つのタブ文字で区切られます。レコード内の行またはレコード自体には特定の順序はありません。タグは大文字と小文字を区別します。次のタグが定義されています。
タグ | 説明 |
---|---|
Slot | デバイスが存在するスロットの名前 ([domain:]bus:device.function)。このタグはレコード内で常に最初にあります。 |
Class | クラスの名前。 |
Vendor | ベンダーの名前。 |
Device | デバイスの名前。 |
SVendor | サブシステムベンダーの名前(オプション)。 |
SDevice | サブシステムの名前(オプション)。 |
PhySlot | デバイスが存在する物理スロット(オプション、Linux のみ)。 |
Rev | リビジョン番号(オプション)。 |
ProgIf | プログラミングインターフェース(オプション)。 |
Driver | デバイスを現在処理しているカーネルドライバー(オプション、Linux のみ)。 |
Module | デバイスの処理が可能であると報告しているカーネルモジュール(オプション、Linux のみ)。このタグの複数の行が発生することがあります。 |
NUMANode | このデバイスが接続されている NUMA ノード(オプション、Linux のみ)。 |
IOMMUGroup | このデバイスが所属する IOMMU グループ(オプション、Linux のみ)。 |
将来のバージョンでは新しいタグが追加される可能性があるため、認識できないタグは静かに無視する必要があります。
Backward-compatible verbose format (-vm
)
このモードでは、lspci は古いバージョンと完全に互換性があるようになるようにします。通常の詳細な形式とほぼ同じですが、デバイスのタグがスロット名とデバイス名の両方に使用されるため、1 つのレコード内で 2 回発生します。新しいコードではこの形式を使用しないでください。
FILES
/usr/share/misc/pci.ids
すべての既知の PCI ID(ベンダー、デバイス、クラス、サブクラス)のリスト。最新版をダウンロードするには、https://pci-ids.ucw.cz/ で管理されている update-pciids ユーティリティを使用してください。
/usr/share/misc/pci.ids.gz
lspci が圧縮をサポートしてコンパイルされている場合、このファイルが pci.ids の前に試されます。
~/.pciids-cache
DNS クエリモードで見つかったすべての ID がこのファイルにキャッシュされます。
BUGS
- lspci は、設定レジスタを完全に解読できない場合があります。これは、ベンダーが lspci の開発者に十分な情報を提供していない場合によく起こります。そのような場合、少なくとも
<?>
マークが表示され、追加情報があることを示します。詳細がわかる場合は、修正がもちろん歓迎されます。 - 拡張構成スペースへのアクセスは、現在、linux_sysfs バックエンドでのみサポートされています。
SEE ALSO
setpci(8), pci.ids(5), update-pciids(8), pcilib(7)
lspci の出力例
lspci の出力例は以下の通りです。
myadmin@ubuntu:~$ sudo lspci -D -s 0000:02:00.0 -d 8086:10c9:0200 -nn -v
0000:02:00.0 Ethernet controller [0200]: Intel Corporation 82576 Gigabit Network Connection [8086:10c9] (rev 01)
Subsystem: Intel Corporation Gigabit ET Dual Port Server Adapter [8086:a03c]
Flags: bus master, fast devsel, latency 0, IRQ 18, IOMMU group 9
Memory at df420000 (32-bit, non-prefetchable) [size=128K]
Memory at df000000 (32-bit, non-prefetchable) [size=4M]
I/O ports at d020 [size=32]
Memory at df444000 (32-bit, non-prefetchable) [size=16K]
Expansion ROM at dec00000 [disabled] [size=4M]
Capabilities: [40] Power Management version 3
Capabilities: [50] MSI: Enable- Count=1/1 Maskable+ 64bit+
Capabilities: [70] MSI-X: Enable+ Count=10 Masked-
Capabilities: [a0] Express Endpoint, MSI 00
Capabilities: [100] Advanced Error Reporting
Capabilities: [140] Device Serial Number 98-b7-85-ff-ff-01-7b-22
Capabilities: [150] Alternative Routing-ID Interpretation (ARI)
Capabilities: [160] Single Root I/O Virtualization (SR-IOV)
Kernel driver in use: igb
Kernel modules: igb
上記の出力から読み取れる主な項目は以下の通りです。
項目 | 行数 | 値 | 備考 |
---|---|---|---|
ドメイン番号 | 2 | 0000 (0000:02:00.0) | ドメイン番号、バス番号、デバイス番号、ファンクション番号をまとめて PCI 識別番号という。 |
バス番号 | 2 | 02 (0000:02:00.0) | 同上 |
デバイス番号 | 2 | 00 (0000:02:00.0) | 同上 |
ファンクション番号 | 2 | 0 (0000:02:00.0) | 同上 |
クラス (ID) | 2 | Ethernet controller (0200) | PCI デバイスの種類 |
ベンダー (ID) | 2 | Intel Corporation (8086) | [8086:10c9] |
デバイス (ID) | 2 | 82576 Gigabit Network Connection (10c9) | [8086:10c9] |
バスの速度 | 4 | デバイスにより、bus master, の横に表示されるようです。 | |
IRQ 番号 | 4 | IRQ 18 | |
I/O ポートアドレス | 7 | I/O ports at d020 [size=32] |