pci

参考https://cromwell-intl.com/open-source/sysfs.html

bus:slot.function ------------ domain:bus:slot.function,
[root@localhost ~]# lspci
00:00.0 PCI bridge: Huawei Technologies Co., Ltd. HiSilicon PCIe Root Port with Gen4 (rev 21) ----------root
00:08.0 PCI bridge: Huawei Technologies Co., Ltd. HiSilicon PCIe Root Port with Gen4 (rev 21)------------root
00:0c.0 PCI bridge: Huawei Technologies Co., Ltd. HiSilicon PCIe Root Port with Gen4 (rev 21)
00:10.0 PCI bridge: Huawei Technologies Co., Ltd. HiSilicon PCIe Root Port with Gen4 (rev 21)
00:11.0 PCI bridge: Huawei Technologies Co., Ltd. HiSilicon PCIe Root Port with Gen4 (rev 21)
00:12.0 PCI bridge: Huawei Technologies Co., Ltd. HiSilicon PCIe Root Port with Gen4 (rev 21)
02:00.0 RAID bus controller: LSI Logic / Symbios Logic MegaRAID Tri-Mode SAS3508 (rev 01)
03:00.0 PCI bridge: Huawei Technologies Co., Ltd. Hi1822 Family Virtual Bridge (rev 45)
04:00.0 PCI bridge: Huawei Technologies Co., Ltd. Hi1822 Family Virtual Bridge (rev 45)
04:01.0 PCI bridge: Huawei Technologies Co., Ltd. Hi1822 Family Virtual Bridge (rev 45)
05:00.0 Ethernet controller: Huawei Technologies Co., Ltd. Hi1822 Family (2*25GE) (rev 45)
06:00.0 Ethernet controller: Huawei Technologies Co., Ltd. Hi1822 Family (2*25GE) (rev 45)
07:00.0 Signal processing controller: Huawei Technologies Co., Ltd. iBMA Virtual Network Adapter (rev 01)
08:00.0 VGA compatible controller: Huawei Technologies Co., Ltd. Hi1710 [iBMC Intelligent Management system chip w/VGA support] (rev 01)
74:02.0 Serial Attached SCSI controller: Huawei Technologies Co., Ltd. HiSilicon SAS 3.0 HBA (rev 21)
74:03.0 SATA controller: Huawei Technologies Co., Ltd. HiSilicon AHCI HBA (rev 21)
74:04.0 Serial Attached SCSI controller: Huawei Technologies Co., Ltd. HiSilicon SAS 3.0 HBA (rev 21)
7a:00.0 USB controller: Huawei Technologies Co., Ltd. HiSilicon USB 1.1 Host Controller (rev 21)
7a:01.0 USB controller: Huawei Technologies Co., Ltd. HiSilicon USB 2.0 2-port Host Controller (rev 21)
7a:02.0 USB controller: Huawei Technologies Co., Ltd. HiSilicon USB 3.0 Host Controller (rev 21)
7b:00.0 System peripheral: Huawei Technologies Co., Ltd. HiSilicon Embedded DMA Engine (rev 21)
7c:00.0 PCI bridge: Huawei Technologies Co., Ltd. HiSilicon PCI-PCI Bridge (rev 20)
7d:00.0 Ethernet controller: Huawei Technologies Co., Ltd. HNS GE/10GE/25GE RDMA Network Controller (rev 21)
7d:00.1 Ethernet controller: Huawei Technologies Co., Ltd. HNS GE/10GE/25GE Network Controller (rev 21)
7d:00.2 Ethernet controller: Huawei Technologies Co., Ltd. HNS GE/10GE/25GE RDMA Network Controller (rev 21)
7d:00.3 Ethernet controller: Huawei Technologies Co., Ltd. HNS GE/10GE/25GE Network Controller (rev 21)
80:00.0 PCI bridge: Huawei Technologies Co., Ltd. HiSilicon PCIe Root Port with Gen4 (rev 21)
80:08.0 PCI bridge: Huawei Technologies Co., Ltd. HiSilicon PCIe Root Port with Gen4 (rev 21)
80:0c.0 PCI bridge: Huawei Technologies Co., Ltd. HiSilicon PCIe Root Port with Gen4 (rev 21)
80:10.0 PCI bridge: Huawei Technologies Co., Ltd. HiSilicon PCIe Root Port with Gen4 (rev 21)
81:00.0 Non-Volatile memory controller: Huawei Technologies Co., Ltd. Device 3714 (rev 20)
84:00.0 Non-Volatile memory controller: Huawei Technologies Co., Ltd. Device 3714 (rev 20)
b4:02.0 Serial Attached SCSI controller: Huawei Technologies Co., Ltd. HiSilicon SAS 3.0 HBA (rev 21)
b4:03.0 SATA controller: Huawei Technologies Co., Ltd. HiSilicon AHCI HBA (rev 21)
b4:04.0 Serial Attached SCSI controller: Huawei Technologies Co., Ltd. HiSilicon SAS 3.0 HBA (rev 21)
ba:00.0 USB controller: Huawei Technologies Co., Ltd. HiSilicon USB 1.1 Host Controller (rev 21)
ba:01.0 USB controller: Huawei Technologies Co., Ltd. HiSilicon USB 2.0 2-port Host Controller (rev 21)
ba:02.0 USB controller: Huawei Technologies Co., Ltd. HiSilicon USB 3.0 Host Controller (rev 21)
bb:00.0 System peripheral: Huawei Technologies Co., Ltd. HiSilicon Embedded DMA Engine (rev 21)
bc:00.0 PCI bridge: Huawei Technologies Co., Ltd. HiSilicon PCI-PCI Bridge (rev 20)
[root@localhost ~]# lspci -D
0000:00:00.0 PCI bridge: Huawei Technologies Co., Ltd. HiSilicon PCIe Root Port with Gen4 (rev 21)
0000:00:08.0 PCI bridge: Huawei Technologies Co., Ltd. HiSilicon PCIe Root Port with Gen4 (rev 21)
0000:00:0c.0 PCI bridge: Huawei Technologies Co., Ltd. HiSilicon PCIe Root Port with Gen4 (rev 21)
0000:00:10.0 PCI bridge: Huawei Technologies Co., Ltd. HiSilicon PCIe Root Port with Gen4 (rev 21)
0000:00:11.0 PCI bridge: Huawei Technologies Co., Ltd. HiSilicon PCIe Root Port with Gen4 (rev 21)
0000:00:12.0 PCI bridge: Huawei Technologies Co., Ltd. HiSilicon PCIe Root Port with Gen4 (rev 21)
0000:02:00.0 RAID bus controller: LSI Logic / Symbios Logic MegaRAID Tri-Mode SAS3508 (rev 01)
0000:03:00.0 PCI bridge: Huawei Technologies Co., Ltd. Hi1822 Family Virtual Bridge (rev 45)
0000:04:00.0 PCI bridge: Huawei Technologies Co., Ltd. Hi1822 Family Virtual Bridge (rev 45)
0000:04:01.0 PCI bridge: Huawei Technologies Co., Ltd. Hi1822 Family Virtual Bridge (rev 45)
0000:05:00.0 Ethernet controller: Huawei Technologies Co., Ltd. Hi1822 Family (2*25GE) (rev 45)
0000:06:00.0 Ethernet controller: Huawei Technologies Co., Ltd. Hi1822 Family (2*25GE) (rev 45)
0000:07:00.0 Signal processing controller: Huawei Technologies Co., Ltd. iBMA Virtual Network Adapter (rev 01)
0000:08:00.0 VGA compatible controller: Huawei Technologies Co., Ltd. Hi1710 [iBMC Intelligent Management system chip w/VGA support] (rev 01)
0000:74:02.0 Serial Attached SCSI controller: Huawei Technologies Co., Ltd. HiSilicon SAS 3.0 HBA (rev 21)
0000:74:03.0 SATA controller: Huawei Technologies Co., Ltd. HiSilicon AHCI HBA (rev 21)
0000:74:04.0 Serial Attached SCSI controller: Huawei Technologies Co., Ltd. HiSilicon SAS 3.0 HBA (rev 21)
0000:7a:00.0 USB controller: Huawei Technologies Co., Ltd. HiSilicon USB 1.1 Host Controller (rev 21)
0000:7a:01.0 USB controller: Huawei Technologies Co., Ltd. HiSilicon USB 2.0 2-port Host Controller (rev 21)
0000:7a:02.0 USB controller: Huawei Technologies Co., Ltd. HiSilicon USB 3.0 Host Controller (rev 21)
0000:7b:00.0 System peripheral: Huawei Technologies Co., Ltd. HiSilicon Embedded DMA Engine (rev 21)
0000:7c:00.0 PCI bridge: Huawei Technologies Co., Ltd. HiSilicon PCI-PCI Bridge (rev 20)
0000:7d:00.0 Ethernet controller: Huawei Technologies Co., Ltd. HNS GE/10GE/25GE RDMA Network Controller (rev 21)
0000:7d:00.1 Ethernet controller: Huawei Technologies Co., Ltd. HNS GE/10GE/25GE Network Controller (rev 21)
0000:7d:00.2 Ethernet controller: Huawei Technologies Co., Ltd. HNS GE/10GE/25GE RDMA Network Controller (rev 21)
0000:7d:00.3 Ethernet controller: Huawei Technologies Co., Ltd. HNS GE/10GE/25GE Network Controller (rev 21)
0000:80:00.0 PCI bridge: Huawei Technologies Co., Ltd. HiSilicon PCIe Root Port with Gen4 (rev 21)
0000:80:08.0 PCI bridge: Huawei Technologies Co., Ltd. HiSilicon PCIe Root Port with Gen4 (rev 21)
0000:80:0c.0 PCI bridge: Huawei Technologies Co., Ltd. HiSilicon PCIe Root Port with Gen4 (rev 21)
0000:80:10.0 PCI bridge: Huawei Technologies Co., Ltd. HiSilicon PCIe Root Port with Gen4 (rev 21)
0000:81:00.0 Non-Volatile memory controller: Huawei Technologies Co., Ltd. Device 3714 (rev 20)
0000:84:00.0 Non-Volatile memory controller: Huawei Technologies Co., Ltd. Device 3714 (rev 20)
0000:b4:02.0 Serial Attached SCSI controller: Huawei Technologies Co., Ltd. HiSilicon SAS 3.0 HBA (rev 21)
0000:b4:03.0 SATA controller: Huawei Technologies Co., Ltd. HiSilicon AHCI HBA (rev 21)
0000:b4:04.0 Serial Attached SCSI controller: Huawei Technologies Co., Ltd. HiSilicon SAS 3.0 HBA (rev 21)
0000:ba:00.0 USB controller: Huawei Technologies Co., Ltd. HiSilicon USB 1.1 Host Controller (rev 21)
0000:ba:01.0 USB controller: Huawei Technologies Co., Ltd. HiSilicon USB 2.0 2-port Host Controller (rev 21)
0000:ba:02.0 USB controller: Huawei Technologies Co., Ltd. HiSilicon USB 3.0 Host Controller (rev 21)
0000:bb:00.0 System peripheral: Huawei Technologies Co., Ltd. HiSilicon Embedded DMA Engine (rev 21)
0000:bc:00.0 PCI bridge: Huawei Technologies Co., Ltd. HiSilicon PCI-PCI Bridge (rev 20)
[root@localhost ~]# 
Each line starts with the PCI bus address formatted as bus:slot.function. Buses are numbered to 0f, slots 00 to 1f, and functions 1 to 7. My system has a single PCI domain. If it had more than one I could have used the -D option to get the PCI domain inserted as 4-character hexadecimal in the range 000-ffff. The resulting output is domain:bus:slot.function, for example, 0000:00:00.0.
[root@localhost ~]# lspci -v -s 00:00.0
00:00.0 PCI bridge: Huawei Technologies Co., Ltd. HiSilicon PCIe Root Port with Gen4 (rev 21) (prog-if 00 [Normal decode])
        Flags: bus master, fast devsel, latency 0, IRQ 98, NUMA node 0
        Bus: primary=00, secondary=01, subordinate=01, sec-latency=0
        Capabilities: [40] Express Root Port (Slot+), MSI 00
        Capabilities: [80] MSI: Enable+ Count=2/32 Maskable+ 64bit+
        Capabilities: [b0] Power Management version 3
        Capabilities: [d0] Subsystem: Huawei Technologies Co., Ltd. Device 371e
        Capabilities: [100] Advanced Error Reporting
        Capabilities: [310] #19
        Capabilities: [400] Virtual Channel
        Capabilities: [630] Access Control Services
        Capabilities: [700] #25
        Capabilities: [70c] #27
        Capabilities: [800] #23
        Capabilities: [880] #26
        Capabilities: [900] #23
        Kernel driver in use: pcieport

[root@localhost ~]# lspci -v -s 00:0c.0
00:0c.0 PCI bridge: Huawei Technologies Co., Ltd. HiSilicon PCIe Root Port with Gen4 (rev 21) (prog-if 00 [Normal decode])
        Flags: bus master, fast devsel, latency 0, IRQ 102, NUMA node 0
        Bus: primary=00, secondary=03, subordinate=06, sec-latency=0
        Memory behind bridge: e9200000-e93fffff
        Prefetchable memory behind bridge: 0000080000200000-00000800113fffff
        Capabilities: [40] Express Root Port (Slot+), MSI 00
        Capabilities: [80] MSI: Enable+ Count=2/32 Maskable+ 64bit+
        Capabilities: [b0] Power Management version 3
        Capabilities: [d0] Subsystem: Huawei Technologies Co., Ltd. Device 371e
        Capabilities: [100] Advanced Error Reporting
        Capabilities: [310] #19
        Capabilities: [630] Access Control Services
        Capabilities: [700] #25
        Capabilities: [70c] #27
        Capabilities: [880] #26
        Kernel driver in use: pcieport

[root@localhost ~]# 
[root@localhost ~]# lspci | grep Ethernet
05:00.0 Ethernet controller: Huawei Technologies Co., Ltd. Hi1822 Family (2*25GE) (rev 45)
06:00.0 Ethernet controller: Huawei Technologies Co., Ltd. Hi1822 Family (2*25GE) (rev 45)
7d:00.0 Ethernet controller: Huawei Technologies Co., Ltd. HNS GE/10GE/25GE RDMA Network Controller (rev 21)
7d:00.1 Ethernet controller: Huawei Technologies Co., Ltd. HNS GE/10GE/25GE Network Controller (rev 21)
7d:00.2 Ethernet controller: Huawei Technologies Co., Ltd. HNS GE/10GE/25GE RDMA Network Controller (rev 21)
7d:00.3 Ethernet controller: Huawei Technologies Co., Ltd. HNS GE/10GE/25GE Network Controller (rev 21)
[root@localhost ~]# lspci -v -s 05:00.0
05:00.0 Ethernet controller: Huawei Technologies Co., Ltd. Hi1822 Family (2*25GE) (rev 45)
        Subsystem: Huawei Technologies Co., Ltd. Device d139
        Flags: bus master, fast devsel, latency 0, NUMA node 0
        Memory at 80007b00000 (64-bit, prefetchable) [size=128K]
        Memory at 80008a20000 (64-bit, prefetchable) [size=32K]
        Memory at 80000200000 (64-bit, prefetchable) [size=1M]
        Expansion ROM at e9200000 [disabled] [size=1M]
        Capabilities: [40] Express Endpoint, MSI 00
        Capabilities: [80] MSI: Enable- Count=1/32 Maskable+ 64bit+
        Capabilities: [a0] MSI-X: Enable+ Count=32 Masked-
        Capabilities: [b0] Power Management version 3
        Capabilities: [c0] Vital Product Data
        Capabilities: [100] Advanced Error Reporting
        Capabilities: [150] Alternative Routing-ID Interpretation (ARI)
        Capabilities: [200] Single Root I/O Virtualization (SR-IOV)
        Capabilities: [310] #19
        Capabilities: [4e0] Device Serial Number 44-a1-91-ff-ff-a4-9b-eb
        Capabilities: [4f0] Transaction Processing Hints
        Capabilities: [600] Vendor Specific Information: ID=0000 Rev=0 Len=028 <?>
        Capabilities: [630] Access Control Services
        Kernel driver in use: vfio-pci
        Kernel modules: hinic

[root@localhost ~]# lspci -v -s 06:00.0
06:00.0 Ethernet controller: Huawei Technologies Co., Ltd. Hi1822 Family (2*25GE) (rev 45)
        Subsystem: Huawei Technologies Co., Ltd. Device d139
        Flags: fast devsel, NUMA node 0
        [virtual] Memory at 80010400000 (64-bit, prefetchable) [size=128K]
        [virtual] Memory at 80011320000 (64-bit, prefetchable) [size=32K]
        [virtual] Memory at 80008b00000 (64-bit, prefetchable) [size=1M]
        Expansion ROM at e9300000 [disabled] [size=1M]
        Capabilities: [40] Express Endpoint, MSI 00
        Capabilities: [80] MSI: Enable- Count=1/32 Maskable+ 64bit+
        Capabilities: [a0] MSI-X: Enable- Count=32 Masked-
        Capabilities: [b0] Power Management version 3
        Capabilities: [c0] Vital Product Data
        Capabilities: [100] Advanced Error Reporting
        Capabilities: [150] Alternative Routing-ID Interpretation (ARI)
        Capabilities: [200] Single Root I/O Virtualization (SR-IOV)
        Capabilities: [310] #19
        Capabilities: [4e0] Device Serial Number 44-a1-91-ff-ff-a4-9b-ec
        Capabilities: [4f0] Transaction Processing Hints
        Capabilities: [600] Vendor Specific Information: ID=0000 Rev=0 Len=028 <?>
        Capabilities: [630] Access Control Services
        Kernel driver in use: vfio-pci
        Kernel modules: hinic

[root@localhost ~]# 
[root@localhost ~]# lspci -vt
-+-[0000:bc]---00.0-[bd]--
 +-[0000:bb]---00.0  Huawei Technologies Co., Ltd. HiSilicon Embedded DMA Engine
 +-[0000:ba]-+-00.0  Huawei Technologies Co., Ltd. HiSilicon USB 1.1 Host Controller
 |           +-01.0  Huawei Technologies Co., Ltd. HiSilicon USB 2.0 2-port Host Controller
 |           -02.0  Huawei Technologies Co., Ltd. HiSilicon USB 3.0 Host Controller
 +-[0000:b4]-+-02.0  Huawei Technologies Co., Ltd. HiSilicon SAS 3.0 HBA
 |           +-03.0  Huawei Technologies Co., Ltd. HiSilicon AHCI HBA
 |           -04.0  Huawei Technologies Co., Ltd. HiSilicon SAS 3.0 HBA
 +-[0000:80]-+-00.0-[81]----00.0  Huawei Technologies Co., Ltd. Device 3714
 |           +-08.0-[82]--
 |           +-0c.0-[83]--
 |           -10.0-[84]----00.0  Huawei Technologies Co., Ltd. Device 3714
 +-[0000:7c]---00.0-[7d]--+-00.0  Huawei Technologies Co., Ltd. HNS GE/10GE/25GE RDMA Network Controller
 |                        +-00.1  Huawei Technologies Co., Ltd. HNS GE/10GE/25GE Network Controller
 |                        +-00.2  Huawei Technologies Co., Ltd. HNS GE/10GE/25GE RDMA Network Controller
 |                        -00.3  Huawei Technologies Co., Ltd. HNS GE/10GE/25GE Network Controller
 +-[0000:7b]---00.0  Huawei Technologies Co., Ltd. HiSilicon Embedded DMA Engine
 +-[0000:7a]-+-00.0  Huawei Technologies Co., Ltd. HiSilicon USB 1.1 Host Controller
 |           +-01.0  Huawei Technologies Co., Ltd. HiSilicon USB 2.0 2-port Host Controller
 |           -02.0  Huawei Technologies Co., Ltd. HiSilicon USB 3.0 Host Controller
 +-[0000:74]-+-02.0  Huawei Technologies Co., Ltd. HiSilicon SAS 3.0 HBA
 |           +-03.0  Huawei Technologies Co., Ltd. HiSilicon AHCI HBA
 |           -04.0  Huawei Technologies Co., Ltd. HiSilicon SAS 3.0 HBA
 -[0000:00]-+-00.0-[01]--
             +-08.0-[02]----00.0  LSI Logic / Symbios Logic MegaRAID Tri-Mode SAS3508
             +-0c.0-[03-06]----00.0-[04-06]--+-00.0-[05]----00.0  Huawei Technologies Co., Ltd. Hi1822 Family (2*25GE)
             |                               -01.0-[06]----00.0  Huawei Technologies Co., Ltd. Hi1822 Family (2*25GE)
             +-10.0-[07]----00.0  Huawei Technologies Co., Ltd. iBMA Virtual Network Adapter
             +-11.0-[08]----00.0  Huawei Technologies Co., Ltd. Hi1710 [iBMC Intelligent Management system chip w/VGA support]
             -12.0-[09]--
[root@localhost ~]#
https://cromwell-intl.com/open-source/sysfs.html
Let's look closer at my Ethernet interfaces.

# lspci | grep Ethernet
06:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 07)
07:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 07)
0c:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 09) 
All have a Realtek RTL8111/8168/8411 chipset. The two marked as "rev 07" at PCI bus addresses 06:00.0 and 07:00.0 are on an expansion card plugged into a PCIe slot, notice that they share one serial number and are on a Realtek card. The one marked "rev 09" at PCI bus address 0c:00.0 is on the motherboard. Let's see more details of just those devices:

# lspci -v -s 06:00.0
06:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 07)
    Subsystem: Realtek Semiconductor Co., Ltd. Device 0123
    Flags: bus master, fast devsel, latency 0, IRQ 42
    I/O ports at b000 [size=256]
    Memory at fe200000 (64-bit, non-prefetchable) [size=4K]
    Memory at d2200000 (64-bit, prefetchable) [size=16K]
    Capabilities: [40] Power Management version 3
    Capabilities: [50] MSI: Enable+ Count=1/1 Maskable- 64bit+
    Capabilities: [70] Express Endpoint, MSI 01
    Capabilities: [b0] MSI-X: Enable- Count=4 Masked-
    Capabilities: [d0] Vital Product Data
    Capabilities: [100] Advanced Error Reporting
    Capabilities: [140] Virtual Channel
    Capabilities: [160] Device Serial Number 01-00-00-00-68-4c-e0-00
    Kernel driver in use: r8169
    Kernel modules: r8169

# lspci -v -s 07:00.0
07:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 07)
    Subsystem: Realtek Semiconductor Co., Ltd. Device 0123
    Flags: bus master, fast devsel, latency 0, IRQ 43
    I/O ports at a000 [size=256]
    Memory at fe100000 (64-bit, non-prefetchable) [size=4K]
    Memory at d2100000 (64-bit, prefetchable) [size=16K]
    Capabilities: [40] Power Management version 3
    Capabilities: [50] MSI: Enable+ Count=1/1 Maskable- 64bit+
    Capabilities: [70] Express Endpoint, MSI 01
    Capabilities: [b0] MSI-X: Enable- Count=4 Masked-
    Capabilities: [d0] Vital Product Data
    Capabilities: [100] Advanced Error Reporting
    Capabilities: [140] Virtual Channel
    Capabilities: [160] Device Serial Number 01-00-00-00-68-4c-e0-00
    Kernel driver in use: r8169
    Kernel modules: r8169

# lspci -v -s 0c:00.0
0c:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 09)
    Subsystem: ASUSTeK Computer Inc. P8 series motherboard---------mother
    Flags: bus master, fast devsel, latency 0, IRQ 41
    I/O ports at c000 [size=256]
    Memory at d2304000 (64-bit, prefetchable) [size=4K]
    Memory at d2300000 (64-bit, prefetchable) [size=16K]
    Capabilities: [40] Power Management version 3
    Capabilities: [50] MSI: Enable+ Count=1/1 Maskable- 64bit+
    Capabilities: [70] Express Endpoint, MSI 01
    Capabilities: [b0] MSI-X: Enable- Count=4 Masked-
    Capabilities: [d0] Vital Product Data
    Capabilities: [100] Advanced Error Reporting
    Capabilities: [140] Virtual Channel
    Capabilities: [160] Device Serial Number 95-00-00-00-68-4c-e0-00
    Kernel driver in use: r8169
    Kernel modules: r8169
[root@localhost ~]#  cat /proc/ioports | grep rtc
[root@localhost ~]#  cat /proc/ioports 
00000000-0000ffff : PCI Bus 0000:00
  00001000-00001fff : PCI Bus 0000:02
    00001000-000010ff : 0000:02:00.0
00010000-0001ffff : PCI Bus 0000:80
[root@localhost ~]#  cat /proc/iomem 
00000000-0000ffff : reserved
00010000-2abaffff : System RAM
  00080000-00bfffff : Kernel code
  00d70000-0194ffff : Kernel data
2abb0000-2b9cffff : reserved
2b9d0000-2c08ffff : System RAM
2c090000-2c0affff : reserved
2c0b0000-2f32ffff : System RAM
2f330000-2f69ffff : reserved
2f6a0000-2f6dffff : System RAM
2f6e0000-2f77ffff : reserved
2f780000-2f79ffff : System RAM
2f7a0000-2f8dffff : reserved
2f8e0000-2f96ffff : System RAM
2f970000-2fbfffff : reserved
2fc00000-2fc1ffff : System RAM
2fc20000-2fc7ffff : reserved
2fc80000-3f02ffff : System RAM
3f030000-3f05ffff : reserved
3f060000-3fbfffff : System RAM
40000000-43ffffff : reserved
44030000-4fffffff : reserved
50000000-7fffffff : System RAM
  60000000-7fffffff : Crash kernel
90120000-9012ffff : HISI0243:00
  90120000-9012ffff : HISI0243:00
90130000-9013ffff : HISI0243:01
  90130000-9013ffff : HISI0243:01
90180000-9018ffff : HISI0213:00
  90180000-9018ffff : HISI0213:00
90190000-9019ffff : HISI0213:01
  90190000-9019ffff : HISI0213:01
901a0000-901affff : HISI0213:02
  901a0000-901affff : HISI0213:02
901b0000-901bffff : HISI0213:03
  901b0000-901bffff : HISI0213:03
901c0000-901cffff : HISI0213:04
  901c0000-901cffff : HISI0213:04
901d0000-901dffff : HISI0213:05
  901d0000-901dffff : HISI0213:05
94d20000-94d2ffff : HISI0233:00
  94d20000-94d2ffff : HISI0233:00
94d30000-94d3ffff : HISI0233:01
  94d30000-94d3ffff : HISI0233:01
94d40000-94d4ffff : HISI0233:02
  94d40000-94d4ffff : HISI0233:02
94d50000-94d5ffff : HISI0233:03
  94d50000-94d5ffff : HISI0233:03
98120000-9812ffff : HISI0243:02
  98120000-9812ffff : HISI0243:02
98130000-9813ffff : HISI0243:03
  98130000-9813ffff : HISI0243:03
98180000-9818ffff : HISI0213:08
  98180000-9818ffff : HISI0213:08
98190000-9819ffff : HISI0213:09
  98190000-9819ffff : HISI0213:09
981a0000-981affff : HISI0213:0a
  981a0000-981affff : HISI0213:0a
981b0000-981bffff : HISI0213:0b
  981b0000-981bffff : HISI0213:0b
981c0000-981cffff : HISI0213:0c
  981c0000-981cffff : HISI0213:0c
981d0000-981dffff : HISI0213:0d
  981d0000-981dffff : HISI0213:0d
9c200000-9c200fff : sbsa-gwdt.0
  9c200000-9c200fff : sbsa-gwdt.0
9c210000-9c210fff : sbsa-gwdt.0
  9c210000-9c210fff : sbsa-gwdt.0
9cd20000-9cd2ffff : HISI0233:04
  9cd20000-9cd2ffff : HISI0233:04
9cd30000-9cd3ffff : HISI0233:05
  9cd30000-9cd3ffff : HISI0233:05
9cd40000-9cd4ffff : HISI0233:06
  9cd40000-9cd4ffff : HISI0233:06
9cd50000-9cd5ffff : HISI0233:07
  9cd50000-9cd5ffff : HISI0233:07
a2000000-a2ffffff : PCI Bus 0000:74
  a2000000-a2007fff : 0000:74:02.0
    a2000000-a2007fff : hisi_sas_v3_hw
  a2008000-a200ffff : 0000:74:04.0
    a2008000-a200ffff : hisi_sas_v3_hw
  a2010000-a2010fff : 0000:74:03.0
    a2010000-a2010fff : ahci
a3000000-a3ffffff : PCI Bus 0000:b4
  a3000000-a3007fff : 0000:b4:02.0
    a3000000-a3007fff : hisi_sas_v3_hw
  a3008000-a300ffff : 0000:b4:04.0
    a3008000-a300ffff : hisi_sas_v3_hw
  a3010000-a3010fff : 0000:b4:03.0
    a3010000-a3010fff : ahci
a8080000-a808ffff : HISI0152:0d
  a8080000-a808ffff : HISI0152:0c
    a8080000-a808ffff : HISI0152:0b
      a8080000-a808ffff : HISI0152:0a
        a8080000-a808ffff : HISI0152:09
          a8080000-a808ffff : HISI0152:08
          a8080000-a808ffff : HISI0152:05
          a8080000-a808ffff : HISI0152:04
          a8080000-a808ffff : HISI0152:03
          a8080000-a808ffff : HISI0152:02
          a8080000-a808ffff : HISI0152:01
          a8080000-a808ffff : HISI0152:00
ac080000-ac08ffff : HISI0152:1b
  ac080000-ac08ffff : HISI0152:1a
    ac080000-ac08ffff : HISI0152:19
      ac080000-ac08ffff : HISI0152:18
        ac080000-ac08ffff : HISI0152:17
          ac080000-ac08ffff : HISI0152:16
          ac080000-ac08ffff : HISI0152:13
          ac080000-ac08ffff : HISI0152:12
          ac080000-ac08ffff : HISI0152:11
          ac080000-ac08ffff : HISI0152:10
          ac080000-ac08ffff : HISI0152:0f
          ac080000-ac08ffff : HISI0152:0e
b0000000-cffeffff : PCI Bus 0000:80
  b0000000-b00fffff : PCI Bus 0000:81
    b0000000-b001ffff : 0000:81:00.0
      b0000000-b001ffff : nvme
    b0020000-b003ffff : 0000:81:00.0
    b0040000-b004ffff : 0000:81:00.0
      b0040000-b004ffff : nvme
  b0100000-b01fffff : PCI Bus 0000:84
    b0100000-b011ffff : 0000:84:00.0
      b0100000-b011ffff : nvme
    b0120000-b013ffff : 0000:84:00.0
    b0140000-b014ffff : 0000:84:00.0
      b0140000-b014ffff : nvme
d0000000-d3ffffff : PCI ECAM
d7400000-d76fffff : PCI ECAM
d7800000-d79fffff : PCI ECAM
d7a00000-d7afffff : PCI ECAM
d7b00000-d7bfffff : PCI ECAM
d7c00000-d7dfffff : PCI ECAM
d8000000-d9ffffff : PCI ECAM
db400000-db6fffff : PCI ECAM
db800000-db9fffff : PCI ECAM
dba00000-dbafffff : PCI ECAM
dbb00000-dbbfffff : PCI ECAM
dbc00000-dbdfffff : PCI ECAM
e0000000-f7feffff : PCI Bus 0000:00
  e0000000-e5ffffff : PCI Bus 0000:07
    e0000000-e3ffffff : 0000:07:00.0
    e4000000-e40fffff : 0000:07:00.0
  e6000000-e8ffffff : PCI Bus 0000:08
    e6000000-e7ffffff : 0000:08:00.0
      e6000000-e612ffff : efifb
    e8000000-e81fffff : 0000:08:00.0
  e9000000-e91fffff : PCI Bus 0000:02
    e9000000-e90fffff : 0000:02:00.0
    e9100000-e91fffff : 0000:02:00.0
  e9200000-e93fffff : PCI Bus 0000:03
    e9200000-e93fffff : PCI Bus 0000:04
      e9200000-e92fffff : PCI Bus 0000:05
        e9200000-e92fffff : 0000:05:00.0
      e9300000-e93fffff : PCI Bus 0000:06
        e9300000-e93fffff : 0000:06:00.0
100000000-10001ffff : arm-smmu-v3.2.auto
  100000000-10001ffff : arm-smmu-v3.2.auto
120000000-13fffffff : PCI Bus 0000:7c
  120000000-1210fffff : PCI Bus 0000:7d
    120000000-1200fffff : 0000:7d:00.0
      120000000-1200fffff : hclge
    120100000-1203fffff : 0000:7d:00.0
    120400000-1204fffff : 0000:7d:00.1
      120400000-1204fffff : hclge
    120500000-1207fffff : 0000:7d:00.1
    120800000-1208fffff : 0000:7d:00.2
      120800000-1208fffff : hclge
    120900000-120bfffff : 0000:7d:00.2
    120c00000-120cfffff : 0000:7d:00.3
      120c00000-120cfffff : hclge
    120d00000-120ffffff : 0000:7d:00.3
    121000000-12100ffff : 0000:7d:00.0
      121000000-12100ffff : hclge
    121010000-12103ffff : 0000:7d:00.0
    121040000-12104ffff : 0000:7d:00.1
      121040000-12104ffff : hclge
    121050000-12107ffff : 0000:7d:00.1
    121080000-12108ffff : 0000:7d:00.2
      121080000-12108ffff : hclge
    121090000-1210bffff : 0000:7d:00.2
    1210c0000-1210cffff : 0000:7d:00.3
      1210c0000-1210cffff : hclge
    1210d0000-1210fffff : 0000:7d:00.3
140000000-14001ffff : arm-smmu-v3.3.auto
  140000000-14001ffff : arm-smmu-v3.3.auto
141000000-141ffffff : PCI Bus 0000:74
144000000-145ffffff : PCI Bus 0000:74
148000000-14801ffff : arm-smmu-v3.0.auto
  148000000-14801ffff : arm-smmu-v3.0.auto
148800000-148ffffff : PCI Bus 0000:7b
  148800000-148803fff : 0000:7b:00.0
201000000-20101ffff : arm-smmu-v3.1.auto
  201000000-20101ffff : arm-smmu-v3.1.auto
201080000-20108ffff : HISI0152:38
201130000-20113ffff : HISI0181:00
  201130000-20113ffff : HISI0181:00
201160000-20116ffff : HISI02A2:00
  201160000-20116ffff : HISI02A2:00
2011a0000-2011affff : HISI0173:00
204000000-205ffffff : HISI0343:00
206200000-206200fff : HISI0343:00
206210000-20621ffff : HISI0192:00
206220000-20622ffff : HISI0192:00
208000000-208bfffff : PCI Bus 0000:78
20c000000-20c1fffff : PCI Bus 0000:7a
  20c000000-20c0fffff : 0000:7a:02.0
    20c000000-20c0fffff : xhci-hcd
  20c100000-20c100fff : 0000:7a:00.0
    20c100000-20c100fff : ohci_hcd
  20c101000-20c101fff : 0000:7a:01.0
    20c101000-20c101fff : ehci_hcd
3f00000e4-3f00000e7 : IPI0001:00
  3f00000e4-3f00000e4 : ipmi_si
  3f00000e5-3f00000e5 : ipmi_si
  3f00000e6-3f00000e6 : ipmi_si
3f00002f8-3f00002ff : serial
2080000000-3fffffffff : System RAM
4000000000-5fffffffff : System RAM
80000000000-82fffffffff : PCI Bus 0000:00
  80000000000-800001fffff : PCI Bus 0000:02
    80000000000-800000fffff : 0000:02:00.0
      80000000000-800000fffff : megasas: LSI
    80000100000-800001fffff : 0000:02:00.0
  80000200000-800113fffff : PCI Bus 0000:03
    80000200000-800113fffff : PCI Bus 0000:04
      80000200000-80008afffff : PCI Bus 0000:05
        80000200000-800002fffff : 0000:05:00.0
          80000200000-800002fffff : vfio-pci
        80000300000-80007afffff : 0000:05:00.0
        80007b00000-80007b1ffff : 0000:05:00.0
          80007b00000-80007b1ffff : vfio-pci
        80007b20000-8000829ffff : 0000:05:00.0
        800082a0000-80008a1ffff : 0000:05:00.0
        80008a20000-80008a27fff : 0000:05:00.0
        80008a28000-80008a2ffff : vfio sub-page reserved
      80008b00000-800113fffff : PCI Bus 0000:06
        80008b00000-80008bfffff : 0000:06:00.0
        80008c00000-800103fffff : 0000:06:00.0
        80010400000-8001041ffff : 0000:06:00.0
        80010420000-80010b9ffff : 0000:06:00.0
        80010ba0000-8001131ffff : 0000:06:00.0
        80011320000-80011327fff : 0000:06:00.0
200090120000-20009012ffff : HISI0243:04
  200090120000-20009012ffff : HISI0243:04
200090130000-20009013ffff : HISI0243:05
  200090130000-20009013ffff : HISI0243:05
200090180000-20009018ffff : HISI0213:10
  200090180000-20009018ffff : HISI0213:10
200090190000-20009019ffff : HISI0213:11
  200090190000-20009019ffff : HISI0213:11
2000901a0000-2000901affff : HISI0213:12
  2000901a0000-2000901affff : HISI0213:12
2000901b0000-2000901bffff : HISI0213:13
  2000901b0000-2000901bffff : HISI0213:13
2000901c0000-2000901cffff : HISI0213:14
  2000901c0000-2000901cffff : HISI0213:14
2000901d0000-2000901dffff : HISI0213:15
  2000901d0000-2000901dffff : HISI0213:15
200094d20000-200094d2ffff : HISI0233:08
  200094d20000-200094d2ffff : HISI0233:08
200094d30000-200094d3ffff : HISI0233:09
  200094d30000-200094d3ffff : HISI0233:09
200094d40000-200094d4ffff : HISI0233:0a
  200094d40000-200094d4ffff : HISI0233:0a
200094d50000-200094d5ffff : HISI0233:0b
  200094d50000-200094d5ffff : HISI0233:0b
200098120000-20009812ffff : HISI0243:06
  200098120000-20009812ffff : HISI0243:06
200098130000-20009813ffff : HISI0243:07
  200098130000-20009813ffff : HISI0243:07
200098180000-20009818ffff : HISI0213:18
  200098180000-20009818ffff : HISI0213:18
200098190000-20009819ffff : HISI0213:19
  200098190000-20009819ffff : HISI0213:19
2000981a0000-2000981affff : HISI0213:1a
  2000981a0000-2000981affff : HISI0213:1a
2000981b0000-2000981bffff : HISI0213:1b
  2000981b0000-2000981bffff : HISI0213:1b
2000981c0000-2000981cffff : HISI0213:1c
  2000981c0000-2000981cffff : HISI0213:1c
2000981d0000-2000981dffff : HISI0213:1d
  2000981d0000-2000981dffff : HISI0213:1d
20009cd20000-20009cd2ffff : HISI0233:0c
  20009cd20000-20009cd2ffff : HISI0233:0c
20009cd30000-20009cd3ffff : HISI0233:0d
  20009cd30000-20009cd3ffff : HISI0233:0d
20009cd40000-20009cd4ffff : HISI0233:0e
  20009cd40000-20009cd4ffff : HISI0233:0e
20009cd50000-20009cd5ffff : HISI0233:0f
  20009cd50000-20009cd5ffff : HISI0233:0f
2000a8080000-2000a808ffff : HISI0152:29
  2000a8080000-2000a808ffff : HISI0152:28
    2000a8080000-2000a808ffff : HISI0152:27
      2000a8080000-2000a808ffff : HISI0152:26
        2000a8080000-2000a808ffff : HISI0152:25
          2000a8080000-2000a808ffff : HISI0152:24
          2000a8080000-2000a808ffff : HISI0152:21
          2000a8080000-2000a808ffff : HISI0152:20
          2000a8080000-2000a808ffff : HISI0152:1f
          2000a8080000-2000a808ffff : HISI0152:1e
          2000a8080000-2000a808ffff : HISI0152:1d
          2000a8080000-2000a808ffff : HISI0152:1c
2000ac080000-2000ac08ffff : HISI0152:37
  2000ac080000-2000ac08ffff : HISI0152:36
    2000ac080000-2000ac08ffff : HISI0152:35
      2000ac080000-2000ac08ffff : HISI0152:34
        2000ac080000-2000ac08ffff : HISI0152:33
          2000ac080000-2000ac08ffff : HISI0152:32
          2000ac080000-2000ac08ffff : HISI0152:2f
          2000ac080000-2000ac08ffff : HISI0152:2e
          2000ac080000-2000ac08ffff : HISI0152:2d
          2000ac080000-2000ac08ffff : HISI0152:2c
          2000ac080000-2000ac08ffff : HISI0152:2b
          2000ac080000-2000ac08ffff : HISI0152:2a
200100000000-20010001ffff : arm-smmu-v3.6.auto
  200100000000-20010001ffff : arm-smmu-v3.6.auto
200120000000-20013fffffff : PCI Bus 0000:bc
200140000000-20014001ffff : arm-smmu-v3.7.auto
  200140000000-20014001ffff : arm-smmu-v3.7.auto
200141000000-200141ffffff : PCI Bus 0000:b4
200144000000-200145ffffff : PCI Bus 0000:b4
200148000000-20014801ffff : arm-smmu-v3.4.auto
  200148000000-20014801ffff : arm-smmu-v3.4.auto
200148800000-200148ffffff : PCI Bus 0000:bb
  200148800000-200148803fff : 0000:bb:00.0
200201000000-20020101ffff : arm-smmu-v3.5.auto
  200201000000-20020101ffff : arm-smmu-v3.5.auto
200208000000-200208bfffff : PCI Bus 0000:b8
20020c000000-20020c1fffff : PCI Bus 0000:ba
  20020c000000-20020c0fffff : 0000:ba:02.0
    20020c000000-20020c0fffff : xhci-hcd
  20020c100000-20020c100fff : 0000:ba:00.0
    20020c100000-20020c100fff : ohci_hcd
  20020c101000-20020c101fff : 0000:ba:01.0
    20020c101000-20020c101fff : ehci_hcd
202000000000-203fffffffff : System RAM
204000000000-205fffffffff : System RAM
280000000000-282fffffffff : PCI Bus 0000:80
[root@localhost ~]#  cat /proc/iomem  | grep vfio
          80000200000-800002fffff : vfio-pci
          80007b00000-80007b1ffff : vfio-pci
        80008a28000-80008a2ffff : vfio sub-page reserved
[root@localhost ~]# ls /sys/bus/pci/drivers/
ahci         hinic           nvme      uhci_hcd
ata_piix     hisi_sas_v3_hw  ohci-pci  vfio-pci
ehci-pci     hns3            pcieport  xhci_hcd
exar_serial  ipmi_si         pci-stub
hibmc-drm    megaraid_sas    serial
[root@localhost ~]# ls /sys/bus/pci/drivers/vfio-pci/
0000:05:00.0  bind    new_id     uevent
0000:06:00.0  module  remove_id  unbind
[root@localhost ~]# ls /sys/bus/pci/drivers/vfio-pci/0000:05:00.0
broken_parity_status      msi_irqs
class                     numa_node
config                    power
consistent_dma_mask_bits  remove
current_link_speed        rescan
current_link_width        reset
d3cold_allowed            resource
device                    resource0
devspec                   resource2
dma_mask_bits             resource4
driver                    revision
driver_override           rom
enable                    sriov_drivers_autoprobe
iommu                     sriov_numvfs
iommu_group               sriov_totalvfs
irq                       subsystem
local_cpulist             subsystem_device
local_cpus                subsystem_vendor
max_link_speed            uevent
max_link_width            vendor
modalias                  vpd
msi_bus
[root@localhost ~]# ls /sys/bus/pci/drivers/vfio-pci/0000:05:00.0/resource*
/sys/bus/pci/drivers/vfio-pci/0000:05:00.0/resource
/sys/bus/pci/drivers/vfio-pci/0000:05:00.0/resource0
/sys/bus/pci/drivers/vfio-pci/0000:05:00.0/resource2
/sys/bus/pci/drivers/vfio-pci/0000:05:00.0/resource4
[root@localhost ~]# cat  /sys/bus/pci/drivers/vfio-pci/0000:05:00.0/resource*
0x0000080007b00000 0x0000080007b1ffff 0x000000000014220c
0x0000000000000000 0x0000000000000000 0x0000000000000000
0x0000080008a20000 0x0000080008a27fff 0x000000000014220c
0x0000000000000000 0x0000000000000000 0x0000000000000000---------------------
0x0000080000200000 0x00000800002fffff 0x000000000014220c
0x0000000000000000 0x0000000000000000 0x0000000000000000
0x00000000e9200000 0x00000000e92fffff 0x0000000000046200
0x0000080007b20000 0x000008000829ffff 0x000000000014220c
0x0000000000000000 0x0000000000000000 0x0000000000000000
0x00000800082a0000 0x0000080008a1ffff 0x000000000014220c
0x0000000000000000 0x0000000000000000 0x0000000000000000
0x0000080000300000 0x0000080007afffff 0x000000000014220c
0x0000000000000000 0x0000000000000000 0x0000000000000000
cat: /sys/bus/pci/drivers/vfio-pci/0000:05:00.0/resource0: Input/output error
cat: /sys/bus/pci/drivers/vfio-pci/0000:05:00.0/resource2: Input/output error
cat: /sys/bus/pci/drivers/vfio-pci/0000:05:00.0/resource4: Input/output error
[root@localhost ~]# 
80000200000-80008afffff : PCI Bus 0000:05
        80000200000-800002fffff : 0000:05:00.0
          80000200000-800002fffff : vfio-pci
        80000300000-80007afffff : 0000:05:00.0
        80007b00000-80007b1ffff : 0000:05:00.0
          80007b00000-80007b1ffff : vfio-pci
        80007b20000-8000829ffff : 0000:05:00.0
        800082a0000-80008a1ffff : 0000:05:00.0
        80008a20000-80008a27fff : 0000:05:00.0
        80008a28000-80008a2ffff : vfio sub-page reserved
[root@localhost ~]# ls /sys/bus/pci/drivers/
ahci         hinic           nvme      uhci_hcd
ata_piix     hisi_sas_v3_hw  ohci-pci  vfio-pci
ehci-pci     hns3            pcieport  xhci_hcd
exar_serial  ipmi_si         pci-stub
hibmc-drm    megaraid_sas    serial
[root@localhost ~]# ls /sys/bus/pci/drivers/hinic/
bind  module  new_id  remove_id  uevent  unbind
[root@localhost ~]# ls /sys/bus/pci/drivers/hinic3/
ls: cannot access /sys/bus/pci/drivers/hinic3/: No such file or directory
[root@localhost ~]# ls /sys/bus/pci/drivers/hns3/
0000:7d:00.0  0000:7d:00.2  bind    new_id     uevent
0000:7d:00.1  0000:7d:00.3  module  remove_id  unbind
[root@localhost ~]# ls /sys/bus/pci/drivers/hns3/*/resource*
/sys/bus/pci/drivers/hns3/0000:7d:00.0/resource
/sys/bus/pci/drivers/hns3/0000:7d:00.0/resource0
/sys/bus/pci/drivers/hns3/0000:7d:00.0/resource2
/sys/bus/pci/drivers/hns3/0000:7d:00.1/resource
/sys/bus/pci/drivers/hns3/0000:7d:00.1/resource0
/sys/bus/pci/drivers/hns3/0000:7d:00.1/resource2
/sys/bus/pci/drivers/hns3/0000:7d:00.2/resource
/sys/bus/pci/drivers/hns3/0000:7d:00.2/resource0
/sys/bus/pci/drivers/hns3/0000:7d:00.2/resource2
/sys/bus/pci/drivers/hns3/0000:7d:00.3/resource
/sys/bus/pci/drivers/hns3/0000:7d:00.3/resource0
/sys/bus/pci/drivers/hns3/0000:7d:00.3/resource2
[root@localhost ~]# 
下面是我的电脑上的lspci命令的输出:

     00:00.0 Host bridge: Intel Corporation 82845 845 (Brookdale) Chipset Host Bridge (rev 04)
     00:01.0 PCI bridge: Intel Corporation 82845 845 (Brookdale) Chipset AGP Bridge(rev 04)
     00:1d.0 USB Controller: Intel Corporation 82801CA/CAM USB (Hub #1) (rev 02)
     00:1d.1 USB Controller: Intel Corporation 82801CA/CAM USB (Hub #2) (rev 02)
     00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev 42)
     00:1f.0 ISA bridge: Intel Corporation 82801CAM ISA Bridge (LPC) (rev 02)
     00:1f.1 IDE interface: Intel Corporation 82801CAM IDE U100 (rev 02)
     00:1f.3 SMBus: Intel Corporation 82801CA/CAM SMBus Controller (rev 02)
     00:1f.5 Multimedia audio controller:Intel Corporation 82801CA/CAM AC'97 Audio Controller (rev 02)
     00:1f.6 Modem: Intel Corporation 82801CA/CAM AC'97 Modem Controller (rev 02)
     01:00.0 VGA compatible controller: nVidia Corporation NV17 [GeForce4 420 Go](rev a3)
     02:00.0 FireWire (IEEE 1394): VIA Technologies, Inc. IEEE 1394 Host Controller(rev 46)
     02:01.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+(rev 10)
     02:04.0 CardBus bridge: O2 Micro, Inc. OZ6933 Cardbus Controller (rev 01)
     02:04.1 CardBus bridge: O2 Micro, Inc. OZ6933 Cardbus Controller (rev 01)
lspci没有标明域,但对于一台PC而言,一般只有一个域,即0号域。通过这个输出我们可以看到它是一个IDE interface。

由上述的 输出可以看到,我的电脑上共有3个PCI总线(0号,1号,2号)。在单个系统上,插入多个总线是通过桥(bridge)来完成的,桥是一种用来连接总线 的特殊PCI外设。所以,PCI系统的整体布局组织为树型,我们可以通过上面的lspci输出,来画出我的电脑上的PCI系统的树型结构:

00:00.0(主桥)--00:01.0(PCI桥)-----01:00:0(nVidia显卡)
                   |
                   |---00:1d(USB控制器)--00:1d:0(USB1号控制器)
                   |                    |
                   |                    |--00:1d:1(USB2号控制器)                    |
                   |-00:1e:0(PCI桥)--02:00.0(IEEE1394)
                   |                |
                   |                |-02:01.0(8139网卡)
                   |                |
                   |                |-02:04(CardBus桥)-02:04.0(桥1)
                   |                                   |
                   |                                   |--02:04.1(桥2)
                   |
                   |-00:1f(多功能板卡)-00:1f:0(ISA桥)
                                        |
                                        |--00:1f:1(IDE接口)
                                        |
                                        |--00:1f:3(SMBus)
                                        |
                                        |--00:1f:5(多媒体声音控制器)
                                        |
                                        |--00:1f:6(调制解调器)
由上图可以得出,我的电脑上共有8个PCI设备,其中0号总线上(主桥)上连有4个,1号总线上连有1个,2号总线上连有3个。00:1f是一个连有5个功能的多功能板卡。

每一个PCI设备都有它映射的内存地址空间和它的I/O区域,这点是比较容易理解的。除此之外,PCI设备还有它的配置寄存器。有了配置寄存器, PCI的驱动程序就不需要探测就能访问设备。配置寄存器的布局是标准化的,配置空间的4个字节含有一个独一无二的功能ID,因此,驱动程序可通过查询外设 的特定 ID来识别其设备。所以,PCI接口标准在ISA之上的主要创新在于配置地址空间。
前文已讲过,PCI驱动程序不需要探测就能访问设备,而这得益于配置地址空间。在系统引导阶段,PCI硬件设备保持未激活状态,但每个PCI主板均配备有能够处理PCI的固件,固件通过读写PCI控制器中的寄存器,提供了对设备配置地址空间的访问。

配置地址空间的前64字节是标准化的,它提供了厂商号,设备号,版本号等信息,唯一标识一个PCI设备。同时,它也提供了最多可多达6个的I/O 地址区域,每个区域可以是内存也可以是I/O地址。这几个I/O地址区域是驱动程序找到设备映射到内存和I/O空间的具体位置的唯一途径。有了这两点, PCI驱动程序就完成了相当于探测的功能。

下面,我们来看一下8139too网卡设备的配置空间的详细情况。在2.6内核的系统中,可以在目录/sys/bus/pci/drivers/ 下看到很多以PCI设备名命名的目录,但不是说这些设备都存在于你的系统中。我们进入8139too目录,其中有一个以它的设备地址0000:02: 01.0命名的目录。在这个目录下可以找到该网卡设备相关的很多信息。其中resource记录了它的6个I/O地址区域。内容如下:
         0x0000000000003400 0x00000000000034ff 0x0000000000000101
         0x00000000e0000800 0x00000000e00008ff 0x0000000000000200
         0x0000000000000000 0x0000000000000000 0x0000000000000000
         0x0000000000000000 0x0000000000000000 0x0000000000000000
         0x0000000000000000 0x0000000000000000 0x0000000000000000
         0x0000000000000000 0x0000000000000000 0x0000000000000000
         0x0000000000000000 0x0000000000000000 0x0000000000000000
     由该文件可以看出,8139too设备使用了两个I/O地址区域,第一个是它映射的I/O端口范围,第二个是它映射的内存地址空间。关于这两个值可以在/proc/iomem和/proc/ioport中得到验证。

proc目录下有iomem和ioports文件,其主要描述了系统的io内存和io端口资源分布。
  对于外设的访问,最终都是通过读写设备上的寄存器实现的,寄存器不外乎:控制寄存器、状态寄存器和数据寄存器,这些外设寄存器也称为“IO端口”,并且一个外设的寄存器通常是连续编址的。
  不同的CPU体系对外设IO端口物理地址的编址方式也不同,分为I/O映射方式(I/O-mapped)和内存映射方式(Memory-mapped)。
  对X86熟悉点,以它为例:X86为外设专门实现有单独的地址空间,可以称为“I/O地址空间”或“I/O端口空间”,这个是独立与CPU和RAM物理地址空间,它将所有外设的IO端口均在这一空间进行编址。CPU通过设立专门的IN和OUT指令来访问这一空间中的地址单元(即I/O端口),这就是所谓的“I/O映射方式”(I/O-mapped)。和RAM物理地址空间相比,I/O地址空间通常都比较小,如x86 CPU的I/O空间就只有64KB(0-0xffff)。这是“I/O映射方式”的一个主要缺点,你可以通过cat /proc/ioports去查看,IO port空间的地址资源分配情况是以树状结构显示。这个源于x86平台的设计思想,目前基本不用了,获取这些资源的函数接口如request_region和ioremap。
  Linux设计了一个通用的数据结构resource来描述各种I/O资源(如:I/O端口、外设内存、DMA和IRQ等)。该结构定义在include/linux/ioport.h头文件中。Linux是以一种倒置的树形结构来管理每一类I/O资源。每一类I/O资源都对应有一颗倒置的资源树,树中的每一个节点都是个resource结构。基于上述这个思想,Linux将基于I/O映射方式的I/O端口和基于内存映射方式的I/O端口资源统称为“I/O区域”(I/O Region)。
  /proc/iomem这个文件记录的是物理地址的分配情况,也是以树状结构显示,对其使用也是request_mem_region和ioremap,空间大小为16EB,远大于io port的64K。
  ioport和iomem地址空间分别编制,均是从地址0开始,如果硬件支持MMIO,port地址也可以映射到memory空间去
  这里以pci设备为例,硬件的拓扑结构就决定了硬件在内存映射到CPU的物理地址,由于内存访问都是虚拟地址,所有就需要ioremap,此时物理内存是存在的,所以不用再分配内存,只需要做映射即可
  应用总结:使用I/O内存首先要申请,然后才能映射,使用I/O端口首先要申请,对I/O端口的请求是让内核知道你要访问该端口,内核并让你独占该端口.
  申请I/O端口的函数是request_region, 申请I/O内存的函数是request_mem_region。request_mem_region函数并没有做实际性的映射工作,只是告诉内核要使用一块内存地址,声明占有,也方便内核管理这些资源。重要的还是ioremap函数,ioremap主要是检查传入地址的合法性,建立页表(包括访问权限),完成物理地址到虚拟地址的转换。
  在intel的X86平台,GPIO资源也是类似应用,如果IO配置为SCI或者SMI中断,SCI可以产生GPE,然后经历acpi子系统,不过GPE中断号默认是0x10+GPIO端口号。

  如果request_mem_region和ioremap返回失败,那很可能是地址已经被占用,使用cat /proc/iomem查看物理地址的占用情况。

  树莓派手册中GPIO地址为总线地址,物理地址可以通过源码mach/platform.h中的GPIO_BASE变量得知

原文地址:https://www.cnblogs.com/dream397/p/13549381.html