第三十一篇:!pci of WinDbg

2024-08-29 17:08
文章标签 第三十一 pci windbg

本文主要是介绍第三十一篇:!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

这篇关于第三十一篇:!pci of WinDbg的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1118458

相关文章

如何编写Linux PCI设备驱动器 之一

如何编写Linux PCI设备驱动器 之一 PCI寻址PCI驱动器使用的APIpci_register_driver()pci_driver结构pci_device_id结构 如何查找PCI设备存取PCI配置空间读配置空间APIs写配置空间APIswhere的常量值共用部分类型0类型1 PCI总线通过使用比ISA更高的时钟速率来实现更好的性能;它是时钟运行在 25 或 33 M

PCI Express 体系结构导读摘录(二)

系列文章目录 PCI Express 体系结构导读摘录(一) PCI Express 体系结构导读摘录(二) 文章目录 系列文章目录第Ⅱ篇  PCI Express 体系结构概述第 4 章  PCIe 总线概述4. 1  PCIe 总线的基础知识4. 1. 1  端到端的数据传递4. 1. 2  PCIe 总线使用的信号4. 1. 3  PCIe 总线的层次结构4. 1. 4

13. PCI PIN

PIN是啥? PIN就是我们刷卡时,输入的密码。银联卡基本都有,海外也开始慢慢普及,尤其是mastercard已经在一些国家和地区强制执行,新POS机如果不支持Online PIN已经不允许出新机器了。所以PIN显得格外重要。 PIN的重要性 上篇文章已经讲过,PIN是最敏感数据里面的一种,其实PIN是最敏感里面的最敏感,因为谁也不想自己的取款密码被泄露出去。带PIN的交易,发卡行一般都

12. PCI DSS

支付行业,如果明文的卡信息通过了你的后台,那后台必须有PCI DSS的安全认证。这个认证是做支付系统的敲门砖,如果没有这个证书,基本到哪里都行不通。具体的认证过程和项目可以查看PCI 官网介绍。本篇着重在技术层面讲解需要满足的要求。 敏感数据 卡片交易时,敏感数据分2类,一类是可存储的数据,一类是不可存储的 可存储数据 卡号(PAN)有效期 卡号需要加密存储,有效期可以明文存储 不可存

《PCI Express体系结构导读》随记 —— 第II篇 第7章 PCIe总线的数据链路层与物理层(7)

接前一篇文章:《PCI Express体系结构导读》随记 —— 第II篇 第7章 PCIe总线的数据链路层与物理层(6) 7.1 数据链路层的组成结构 7.1.1 数据链路层的状态 3. DL_Active状态 当数据链路层处于DL_Active状态时,PCIe链路可以正常工作。此时数据链路层可以从事务层和物理层正常接收和发送TLP、并处理DLLP,此时数据链路

代码随想录八股训练营第三十一天| C++

前言 一、虚函数怎么实现的: 1.1.虚函数声明:: 1.2.虚函数表(vtable): 1.3.函数指针:: 1.4.动态绑定: 1.5.析构函数: 1.6.纯虚函数: 二、虚函数表是什么?? 2.1. 虚函数表的工作原理:: 2.2. 虚函数表的作用:: 2.3.虚函数表的实现细节: 总结 前言 在面向对象编程中,多态性是一个核心概念,它允许我们以统一的方式处理

重头开始嵌入式第三十一天(IO多路复用)

目录 1.IO多路复用 1.IO模型 1、阻塞IO ===》最常用 默认设置 2、非阻塞IO ===》在阻塞IO的基础上调整其为不再阻塞等待。 在程序执行阶段调整文件的执行方式为非阻塞: 3.信号驱动io  4.并发   5.IO 多路复用 ===》并发服务器 ===》TCP协议 1、select循环服务器 ===> 用select函数来动态检测有数据流动的文件描述符函数原型:

PCI Device Class Codes

目录 Class Code 0: Pre 2.0 Class Code 1: Mass Storage Controllers Class Code 2: Network Controllers Class Code 3: Display Controllers Class Code 4: Multimedia Devices Class Code 5: Memory Co

Linux源码阅读——PCI总线驱动代码(二)配置空间访问设置

目录 1.什么是配置空间 2.对配置空间的访问 3.PCI驱动中对配置空间的访问的实现 3.1 pci_direct_probe 3.2 pci_mmcfg_early_init 3.3 pci_direct_init 3.4 上述函数总结 3.5 pci_mmcfg_late_init 4.总结 1.什么是配置空间         PCI设备有三个相互独立的物理空间

驱动开发系列17 - PCI总线

一:概述         PCI(外设计算机互连)或PCIe总线是现代计算机的主要组成部分,了解它的工作原理对于理解许多Linux设备驱动程序非常重要。         关于PCI总线本身有很多好的信息(在维基百科和其他地方),而Linux内核中也有关于PCI处理子系统实际实现的文档。然而,这两种现有来源之间存在一个空白,本文希望填补这个空白。         虽然我在这里的重点是理解x86环境