luther@gliethttp:~$ vim /proc/bus/pci/devices0348 11800832 12 c3100000 0 0 0 0 0 0 800 0 0 0 0 0 0 ohci1394
0349 11800822 11 c3100800 0 0 0 0 0 0 100 0 0 0 0 0 0 sdhci-pci
034a 11800843 a c3100c00 0 0 0 0 0 0 100 0 0 0 0 0 0 ricoh-mmc
034b 11800592 a c3101000 0 0 0 0 0 0 100 0 0 0 0 0 0
034c 11800852 a c3101400 0 0 0 0 0 0 100 0 0 0 0 0 0
对该proc文件的输出源码可以直接参考linux 2.6.30.6内核drivers/pci/proc.c中show_device函数.
. 03这1个字节对应dev->bus->number表示bus编号
. 48这1个字节对应dev->devfn,这是设备编号和功能编号的一个组合,低3bits表示功能号,高5bits表示当前总线的slot插槽号
所以
fun=0x48 & 7=0号fun功能
slot=0x48 >> 3=9即,第9个slot插槽.
. 1180该16bits表示vendor id
. 0832该16bits表示device id
. 12对应dev->irq表示该func功能对应的中断号
. c3100000之后都是打印出来的Base Address Register 1到Base Address Register 6内容了,
这里的c3100000就是配置空间0x10偏移处Base Address Register 1中存放的内容,可以使用如下方式查看:
luther@gliethttp:/sys/bus/pci/devices$ xxd -g 1 0000\:03\:09.0/config 0000000: 80 11 32 08 06 01 10 02 00 10 00 0c 00 40 80 00 ..2..........@..
0000010: 00 00 10 c3 00 00 00 00 00 00 00 00 00 00 00 00 ................
0000020: 00 00 00 00 00 00 00 00 00 00 00 00 3c 10 b5 30 ............<..0
0000030: 00 00 00 00 dc 00 00 00 00 00 00 00 0a 01 02 04 ................
. 在最后追加上driver驱动的名字drv->name
luther@gliethttp:/proc/irq$ ls0 1 10 11 12 13 14 15 16 17 18 2 20 21 22 23 3 4 5 6 7 8 9 default_smp_affinity
luther@gliethttp:/proc/irq$ tree 1818
|-- ohci1394
|-- smp_affinity
`-- spurious
1 directory, 2 files
luther@gliethttp:/proc/irq$
luther@gliethttp:/proc$ vim interrupts CPU0 CPU1
0: 32662 3953436 IO-APIC-edge timer
1: 103 10240 IO-APIC-edge i8042
7: 1 0 IO-APIC-edge
8: 0 2 IO-APIC-edge rtc0
9: 4 1697 IO-APIC-fasteoi acpi
12: 0 134 IO-APIC-edge i8042
14: 0 0 IO-APIC-edge pata_amd
15: 1209 127869 IO-APIC-edge pata_amd
16: 8893 1280214 IO-APIC-fasteoi HDA Intel
17: 0 0 IO-APIC-fasteoi mmc0
18: 0 3 IO-APIC-fasteoi ohci1394 20: 12110 1681484 IO-APIC-fasteoi eth3
21: 705 92190 IO-APIC-fasteoi sata_nv
22: 2496 274279 IO-APIC-fasteoi ohci_hcd:usb2
23: 0 2 IO-APIC-fasteoi ehci_hcd:usb1
NMI: 0 0 Non-maskable interrupts
LOC: 2960013 1410386 Local timer interrupts
RES: 3027430 2768443 Rescheduling interrupts
CAL: 1448105 1314496 function call interrupts
TLB: 4788 1595 TLB shootdowns
SPU: 0 0 Spurious interrupts
ERR: 1
MIS: 0
luther@gliethttp:/sys/bus/pci/devices/0000:03:09.0$ cat vendor
0x1180
luther@gliethttp:/sys/bus/pci/devices/0000:03:09.0$ cat device
0x0832
luther@gliethttp:/sys/bus/pci/devices/0000:03:09.0$ cat class
0x0c0010
luther@gliethttp:/sys/bus/pci/devices/0000:03:09.0$ cat subsystem_device
0x30b5
luther@gliethttp:/sys/bus/pci/devices/0000:03:09.0$ cat subsystem_vendor
0x103c
luther@gliethttp:/sys/bus/pci/devices/0000:03:09.0$ cat irq
18
luther@gliethttp:/sys/bus/pci/devices/0000:03:09.0$ cat class
0x0c0010
luther@gliethttp:/sys/bus/pci/devices/0000:03:09.0$ cat resource
0x00000000c3100000 0x00000000c31007ff 0x0000000000020200
0x0000000000000000 0x0000000000000000 0x0000000000000000
0x0000000000000000 0x0000000000000000 0x0000000000000000
0x0000000000000000 0x0000000000000000 0x0000000000000000
0x0000000000000000 0x0000000000000000 0x0000000000000000
0x0000000000000000 0x0000000000000000 0x0000000000000000
0x0000000000000000 0x0000000000000000 0x0000000000000000
luther@gliethttp:~$ lspci 00:00.0 RAM memory: nVidia Corporation C51 Host Bridge (rev a2)
00:00.1 RAM memory: nVidia Corporation C51 Memory Controller 0 (rev a2)
00:00.2 RAM memory: nVidia Corporation C51 Memory Controller 1 (rev a2)
00:00.3 RAM memory: nVidia Corporation C51 Memory Controller 5 (rev a2)
00:00.4 RAM memory: nVidia Corporation C51 Memory Controller 4 (rev a2)
00:00.5 RAM memory: nVidia Corporation C51 Host Bridge (rev a2)
00:00.6 RAM memory: nVidia Corporation C51 Memory Controller 3 (rev a2)
00:00.7 RAM memory: nVidia Corporation C51 Memory Controller 2 (rev a2)
00:02.0 PCI bridge: nVidia Corporation C51 PCI Express Bridge (rev a1)
00:03.0 PCI bridge: nVidia Corporation C51 PCI Express Bridge (rev a1)
00:05.0 VGA compatible controller: nVidia Corporation C51 [Geforce 6150 Go] (rev a2)
00:09.0 RAM memory: nVidia Corporation MCP51 Host Bridge (rev a2)
00:0a.0 ISA bridge: nVidia Corporation MCP51 LPC Bridge (rev a3)
00:0a.1 SMBus: nVidia Corporation MCP51 SMBus (rev a3)
00:0a.3 Co-processor: nVidia Corporation MCP51 PMU (rev a3)
00:0b.0 USB Controller: nVidia Corporation MCP51 USB Controller (rev a3)
00:0b.1 USB Controller: nVidia Corporation MCP51 USB Controller (rev a3)
00:0d.0 IDE interface: nVidia Corporation MCP51 IDE (rev f1)
00:0e.0 IDE interface: nVidia Corporation MCP51 Serial ATA Controller (rev f1)
00:10.0 PCI bridge: nVidia Corporation MCP51 PCI Bridge (rev a2)
00:10.1 Audio device: nVidia Corporation MCP51 High Definition Audio (rev a2)
00:14.0 Bridge: nVidia Corporation MCP51 Ethernet Controller (rev a3)
00:18.0 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] HyperTransport Technology Configuration
00:18.1 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] Address Map
00:18.2 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] DRAM Controller
00:18.3 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] Miscellaneous Control
01:00.0 Network controller: Broadcom Corporation BCM4312 802.11a/b/g (rev 01)
03:09.0 FireWire (IEEE 1394): Ricoh Co Ltd R5C832 IEEE 1394 Controller
03:09.1 SD Host controller: Ricoh Co Ltd R5C822 SD/SDIO/MMC/MS/MSPro Host Adapter (rev 19)
03:09.2 System peripheral: Ricoh Co Ltd R5C843 MMC Host Controller (rev 0a)
03:09.3 System peripheral: Ricoh Co Ltd R5C592 Memory Stick Bus Host Adapter (rev 05)
03:09.4 System peripheral: Ricoh Co Ltd xD-Picture Card Controller (rev ff)
luther@gliethttp:~$
同样的,上面03表示bus总线号09表示slot插槽号0-4表示func功能号.luther@gliethttp:/sys/bus/pci/devices$ xxd -g 1 0000\:03\:09.0/config
0000000: 80 11 32 08 06 01 10 02 00 10 00 0c 00 40 80 00 ..2..........@..
0000010: 00 00 10 c3 00 00 00 00 00 00 00 00 00 00 00 00 ................
0000020: 00 00 00 00 00 00 00 00 00 00 00 00 3c 10 b5 30 ............<..0
0000030: 00 00 00 00 dc 00 00 00 00 00 00 00 0a 01 02 04 ................
luther@gliethttp:/sys/bus/pci/devices$ xxd -g 1 0000\:03\:09.1/config
0000000: 80 11 22 08 06 01 10 02 19 00 05 08 00 40 80 00 .."..........@..
0000010: 00 08 10 c3 00 00 00 00 00 00 00 00 00 00 00 00 ................
0000020: 00 00 00 00 00 00 00 00 00 00 00 00 3c 10 b5 30 ............<..0
0000030: 00 00 00 00 80 00 00 00 00 00 00 00 0a 02 00 00 ................
luther@gliethttp:/sys/bus/pci/devices$ xxd -g 1 0000\:03\:09.2/config
0000000: 80 11 92 05 02 01 10 02 0a 00 80 08 00 00 80 00 ................
0000010: 00 10 10 c3 00 00 00 00 00 00 00 00 00 00 00 00 ................
0000020: 00 00 00 00 00 00 00 00 00 00 00 00 3c 10 b5 30 ............<..0
0000030: 00 00 00 00 80 00 00 00 00 00 00 00 0a 02 00 00 ................
luther@gliethttp:/sys/bus/pci/devices$ xxd -g 1 0000\:03\:09.3/config
0000000: 80 11 52 08 02 01 10 02 05 00 80 08 00 00 80 00 ..R.............
0000010: 00 14 10 c3 00 00 00 00 00 00 00 00 00 00 00 00 ................
0000020: 00 00 00 00 00 00 00 00 00 00 00 00 3c 10 b5 30 ............<..0
0000030: 00 00 00 00 80 00 00 00 00 00 00 00 0a 02 00 00 ................
luther@gliethttp:/sys/bus/pci/devices$ xxd -g 1 0000\:03\:09.4/config
0000000: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
0000010: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
0000020: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
0000030: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................