Linux大学Linux学部LPIC学科講師のLPIC猿です。
本日の講義は「PCIデバイスについて]です。
PCIカードというものがあり、今でもいろいろと拡張するときに使用されています。 例えば、代表的なPCIカードとしてLANカードがあります。今では、LANカードはパソコンに標準でついていますが、昔は、LANカードが付いていないパソコンもあり、ネットワークに接続できずに、インターネットもできないということもあったのです。
そこで、PCIカードの出番となります。パソコンの中にマザーボードというものがあります。
そのマザーボードにはPCIスロットというものがあり、LANカード(PCIカード)を差し込むことができます。これで、LANカードを認識させればネットワークが利用できるようになるのです。
Linuxカーネルが認識しているPCIデバイス一覧を表示するには「lspci」コマンドを実行します。デバイスの種類、ベンダー、デバイス名といった情報を一覧表示します。
# lspci
00:00.0 Host bridge: Intel Corporation 82865G/PE/P DRAM Controller/Host-Hub Interface (rev 02)
00:02.0 VGA compatible controller: Intel Corporation 82865G Integrated Graphics Controller (rev 02)
00:1d.0 USB Controller: Intel Corporation 82801EB/ER (ICH5/ICH5R) USB UHCI Controller #1 (rev 02)
00:1d.1 USB Controller: Intel Corporation 82801EB/ER (ICH5/ICH5R) USB UHCI Controller #2 (rev 02)
00:1d.2 USB Controller: Intel Corporation 82801EB/ER (ICH5/ICH5R) USB UHCI Controller #3 (rev 02)
00:1d.7 USB Controller: Intel Corporation 82801EB/ER (ICH5/ICH5R) USB2 EHCI Controller (rev 02)
00:1e.0 PCI bridge: Intel Corporation 82801 PCI Bridge (rev c2)
00:1f.0 ISA bridge: Intel Corporation 82801EB/ER (ICH5/ICH5R) LPC Interface Bridge (rev 02)
00:1f.1 IDE interface: Intel Corporation 82801EB/ER (ICH5/ICH5R) IDE Controller (rev 02)
00:1f.2 IDE interface: Intel Corporation 82801EB (ICH5) SATA Controller (rev 02)
00:1f.5 Multimedia audio controller: Intel Corporation 82801EB/ER (ICH5/ICH5R) AC'97 Audio Controller (rev 02)
05:02.0 Ethernet controller: Broadcom Corporation NetXtreme BCM5782 Gigabit Ethernet (rev 03)
オプション「-v」をつけるとIRQやI/Oポートアドレスの詳細情報を表示することができます。
# lspci -v
00:00.0 Host bridge: Intel Corporation 82865G/PE/P DRAM Controller/Host-Hub Interface (rev 02)
Subsystem: Hewlett-Packard Company: Unknown device 12bd
Flags: bus master, fast devsel, latency 0
Memory at e0000000 (32-bit, prefetchable) [size=256M]
Capabilities:
00:02.0 VGA compatible controller: Intel Corporation 82865G Integrated Graphics Controller (rev 02) (prog-if 00 [VGA])
Subsystem: Hewlett-Packard Company: Unknown device 12bd
Flags: bus master, fast devsel, latency 0, IRQ 4
Memory at f0000000 (32-bit, prefetchable) [size=128M]
Memory at f8400000 (32-bit, non-prefetchable) [size=512K]
I/O ports at 14e0 [size=8]
Capabilities:
00:1d.0 USB Controller: Intel Corporation 82801EB/ER (ICH5/ICH5R) USB UHCI Controller #1 (rev 02) (prog-if 00 [UHCI])
Subsystem: Hewlett-Packard Company: Unknown device 12bd
Flags: bus master, medium devsel, latency 0, IRQ 4
I/O ports at 1440 [size=32]
「proc/pci」ファイルの内容を表示することで、PCIデバイスの一覧を表示でき、各PCIデバイスに搭載されているチップ名、IRQやI/Oポートアドレスの一覧を確認できます。
# cat /proc/pci
PCI devices found:
Bus 0, device 0, function 0:
Class 0600: PCI device 8086:2570 (rev 2).
Prefetchable 32 bit memory at 0xe0000000 [0xefffffff].
Bus 0, device 2, function 0:
Class 0300: PCI device 8086:2572 (rev 2).
IRQ 4.
Prefetchable 32 bit memory at 0xf0000000 [0xf7ffffff].
Non-prefetchable 32 bit memory at 0xf8400000 [0xf847ffff].
I/O at 0x14e0 [0x14e7].
Bus 0, device 29, function 0:
Class 0c03: PCI device 8086:24d2 (rev 2).
IRQ 4.
I/O at 0x1440 [0x145f].
Bus 0, device 29, function 1:
Class 0c03: PCI device 8086:24d4 (rev 2).
IRQ 5.
I/O at 0x1460 [0x147f].
PCIカードを組み込む際に発生するトラブルとして多いのは、他のデバイスとIRQ番号が重複してしまうことです。
PCIカードはプラグ&プレイに対応しており、ほとんどの場合 IRQ番号などが自動的に割り当てられるため、特に設定を行う必要はありません。もしIRQが衝突した場合は、BIOSでIRQを適切に設定し直す必要があります。
【お勧め問題集】
LPIC予想問題ドットコム