第三十一篇:!pci of WinDbg

刚刚在看WinDbg在硬件调试方面有哪些扩展命令的时候,让我回想起一个工作中的实际事务。


在xHCI USB3.0/3.1 IP项目开发过程中,需要得到类似实际产品的PCIe配置空间信息,以作对比参考。

当时的做法是,将类似产品的xHCI host controller通过PCIe口接到SoC系统中, 通过编写ARM SoC的Bare metal代码来读取每一个产口的PCIe配置空间。


现在发现,WinDbg在KERNEL MODE(双机与LOCAL)下支持与PCI、PCIe的命令: !pci, ! pcitree.

通过该命令,就能方便,快速地读取接到X86/X64系统上的PCI/PCIe EP设备的配置空间信息。

具体的命令参数,请参考WinDbg Help.


这里列举一下在我的实验平台上的两个xHCI controller的配置空间信息:

0: kd> !pcitree
Bus 0x0 (FDO Ext fffffa8006bc97e0)
  (d=0,  f=0) 80860150 devext 0xfffffa8006bc39d0 devstack 0xfffffa8006bc3880 0600 Bridge/HOST to PCI
  (d=2,  f=0) 80860162 devext 0xfffffa8006bc21b0 devstack 0xfffffa8006bc2060 0300 Display Controller/VGA
  (d=14, f=0) 80861e31 devext 0xfffffa8006bc29d0 devstack 0xfffffa8006bc2880 0c03 Serial Bus Controller/USB
  (d=16, f=0) 80861e3a devext 0xfffffa8006bc11b0 devstack 0xfffffa8006bc1060 0780 Simple Serial Communications Controller/‘Other‘
  (d=19, f=0) 80861503 devext 0xfffffa8006bc19d0 devstack 0xfffffa8006bc1880 0200 Network Controller/Ethernet
  (d=1a, f=0) 80861e2d devext 0xfffffa8006bb01b0 devstack 0xfffffa8006bb0060 0c03 Serial Bus Controller/USB
  (d=1b, f=0) 80861e20 devext 0xfffffa8006bb09d0 devstack 0xfffffa8006bb0880 0403 Multimedia Device/Unknown Sub Class
  (d=1c, f=0) 80861e10 devext 0xfffffa8006bf11b0 devstack 0xfffffa8006bf1060 0604 Bridge/PCI to PCI
  Bus 0x1 (FDO Ext fffffa8006beb190)
    (d=0,  f=0) 19120015 devext 0xfffffa8006be11b0 devstack 0xfffffa8006be1060 0c03 Serial Bus Controller/USB
  (d=1c, f=7) 80861e1e devext 0xfffffa8006bf19d0 devstack 0xfffffa8006bf1880 0604 Bridge/PCI to PCI
  Bus 0x2 (FDO Ext fffffa8006beb830)
    (d=0,  f=0) 12838892 devext 0xfffffa8006bbd1b0 devstack 0xfffffa8006bbd060 0604 Bridge/PCI to PCI
    Bus 0x3 (FDO Ext fffffa8006bbdce0)
      No devices have been enumerated on this bus.
  (d=1d, f=0) 80861e26 devext 0xfffffa8006bf01b0 devstack 0xfffffa8006bf0060 0c03 Serial Bus Controller/USB
  (d=1f, f=0) 80861e44 devext 0xfffffa8006bf09d0 devstack 0xfffffa8006bf0880 0601 Bridge/PCI to ISA
  (d=1f, f=2) 80861e02 devext 0xfffffa8006bef1b0 devstack 0xfffffa8006bef060 0106 Mass Storage Controller/Unknown Sub Class
  (d=1f, f=3) 80861e22 devext 0xfffffa8006bef9d0 devstack 0xfffffa8006bef880 0c05 Serial Bus Controller/Unknown Sub Class
Total PCI Root busses processed = 1
Total PCI Segments processed = 1


0: kd> !pci 0x101 0 0x14 0


PCI Configuration Space (Segment:0000 Bus:00 Device:14 Function:00)
Common Header:
    00: VendorID       8086 Intel Corporation
    02: DeviceID       1e31
    04: Command        0406 MemSpaceEn BusInitiate InterruptDis 
    06: Status         0290 CapList FB2BCapable DEVSELTiming:1
    08: RevisionID     04
    09: ProgIF         30
    0a: SubClass       03
    0b: BaseClass      0c
    0c: CacheLineSize  0000
    0d: LatencyTimer   00
    0e: HeaderType     00
    0f: BIST           00
    10: BAR0           f7d20004
    14: BAR1           00000000
    18: BAR2           00000000
    1c: BAR3           00000000
    20: BAR4           00000000
    24: BAR5           00000000
    28: CBCISPtr       00000000
    2c: SubSysVenID    8086
    2e: SubSysID       2030
    30: ROMBAR         00000000
    34: CapPtr         70
    3c: IntLine        00
    3d: IntPin         01
    3e: MinGnt         00
    3f: MaxLat         00
Device Private:
    40: 800e07fd 8003c239 00000000 00000000
    50: 00000017 00000000 00000000 00000000
    60: 00002030 00000000 00000000 00000000
    70: c1c28001 00000008 00000000 00000000
    80: 00b70005 fee0f00c 00000000 000049b8
    90: 00000000 00000000 00000000 00000000
    a0: 00000000 00000000 00000000 00000000
    b0: 0000008f 00000000 00000000 00000000
    c0: 00000c03 00000000 00000000 00000000
    d0: 0000000f 0000000f 0000000f 0000000f
    e0: 00000000 00000000 00000000 00000000
    f0: 00000000 00000000 08040f87 00000000
Capabilities:
    70: CapID          01 PwrMgmt Capability 
    71: NextPtr        80
    72: PwrMgmtCap     c1c2 PMED3Hot PMED3Cold Version=2
    74: PwrMgmtCtrl    0008 DataScale:0 DataSel:0 D0 


    80: CapID          05 MSI Capability 
    81: NextPtr        00
    82: MsgCtrl        64BitCapable MSIEnable MultipleMsgEnable:3 (0x8) MultipleMsgCapable:3 (0x8)
    84: MsgAddr        fee0f00c
    88: MsgAddrHi      0
    8c: MsData         49b8



0: kd> !pci 0x100 1 0x0 0


PCI Configuration Space (Segment:0000 Bus:01 Device:00 Function:00)
Common Header:
    00: VendorID       1912 Renesas Electronics Corp.
    02: DeviceID       0015
    04: Command        0406 MemSpaceEn BusInitiate InterruptDis 
    06: Status         0010 CapList 
    08: RevisionID     02
    09: ProgIF         30
    0a: SubClass       03
    0b: BaseClass      0c
    0c: CacheLineSize  0010 BurstDisabled 
    0d: LatencyTimer   00
    0e: HeaderType     00
    0f: BIST           00
    10: BAR0           f7c00004
    14: BAR1           00000000
    18: BAR2           00000000
    1c: BAR3           00000000
    20: BAR4           00000000
    24: BAR5           00000000
    28: CBCISPtr       00000000
    2c: SubSysVenID    0000
    2e: SubSysID       0000
    30: ROMBAR         00000000
    34: CapPtr         50
    3c: IntLine        00
    3d: IntPin         01
    3e: MinGnt         00
    3f: MaxLat         00
Device Private:
    40: 00000000 00000000 00000000 00000000
    50: c9c37001 00000008 00000000 00000000
    60: 00002030 00000000 00000000 00201809
    70: 00869005 00000000 00000000 00000000
    80: 00000000 00000000 00000000 00000000
    90: 8007a011 00001000 00001080 00000000
    a0: 00020010 00008fc0 00102000 0007ec12
    b0: 10120043 00000000 00000000 00000000
    c0: 00000000 00000810 00000000 00000000
    d0: 00000002 00000000 00000000 00000000
    e0: 00000000 00030000 05010000 00c22210
    f0: 00000500 80000000 00000000 00000000
Capabilities:
    50: CapID          01 PwrMgmt Capability 
    51: NextPtr        70
    52: PwrMgmtCap     c9c3 PMED0 PMED3Hot PMED3Cold Version=3
    54: PwrMgmtCtrl    0008 DataScale:0 DataSel:0 D0 


    70: CapID          05 MSI Capability 
    71: NextPtr        90
    72: MsgCtrl        64BitCapable MultipleMsgEnable:0 (0x1) MultipleMsgCapable:3 (0x8)
    74: MsgAddr        0
    78: MsgAddrHi      0
    7c: MsData         0


    90: CapID          11 MSI-X Capability 
    91: NextPtr        a0
    92: MsgCtrl        TableSize:0x007 FuncMask:0 MSIXEnable:1
    94: MSIXTable      00001000  ( BIR:0  Offset:0x1000 )
    98: PBATable       00001080  ( BIR:0  Offset:0x1080 )


    a0: CapID          10 PCI Express Capability 
    a1: NextPtr        00
    a2: Express Caps   0002 (ver. 2) Type:Endpoint
    a4: Device Caps    00008fc0
    a8: Device Control 2000 MRR:512 ns ap pf et MP:128 ro ur fe nf ce
    aa: Device Status  0010 tp AP ur fe nf ce
    ac: Link Caps      0007ec12
    b0: Link Control   0043 es CC rl ld RCB:64 ASPM:L0s&L1 
    b2: Link Status    1012 SCC lt lte NLW:x1 LS:2.5 
    c4: DeviceCaps2    00000810 CTR:0 CTDIS arifwd aor aoc32 aoc64 cas128 noro LTR TPH:0 OBFF:0 extfmt eetlp EETLPMax:0
    c8: DeviceControl2 0000 CTVal:0 ctdis arifwd aor aoeb idoreq idocom ltr OBFF:0 eetlp


Enhanced Capabilities:
    100: CapID         0001 Advanced Error Reporting Capability 
         Version       1
         NextPtr       150
    104: UncorrectableErrorStatus   00000000  dlpe sde ptlp fcpe ct ca mtlp ecrc ur acsv uie mcbtlp aeb tpb
    108: UncorrectableErrorMask     00000000  dlpe sde ptlp fcpe ct ca mtlp ecrc ur acsv uie mcbtlp aeb tpb
    10c: UncorrectableErrorSeverity 00062030  DLPE SDE ptlp FCPE ct ca MTLP ecrc ur acsv uie mcbtlp aeb tpb
    110: CorrectableErrorStatus     00000000  re btlp bdllp rnr rtt anfe cie hlo
    114: CorrectableErrorMask       00002000  re btlp bdllp rnr rtt ANFE cie hlo
    118: CapabilitiesAndControl     00000000  FirstErr:0 ecrcgcap ecrcgen ecrcccap ecrccen mhrcap mhren tplp


    150: CapID         0018 Latency Tolerance Reporting (LTR) Capability 
         Version       1
         NextPtr       000
         Latency       00000000 MaxSnoopValue:0 MaxSnoopScale:0 MaxNoSnoopValue:0 MaxNoSnoopScale:0

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。