zoukankan      html  css  js  c++  java
  • 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变量得知

  • 相关阅读:
    mybatis中的动态语句中多条件or如何书写
    安装kibana的docker版
    安装elasticsearch的docker版
    git回滚push过的代码
    java中支付宝支付
    05 docker镜像删除
    远程仓库的搭建
    本地git工作流
    创建本地仓库
    git安装
  • 原文地址:https://www.cnblogs.com/dream397/p/13549381.html
Copyright © 2011-2022 走看看