第三十一篇:!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

时间: 2024-10-12 04:55:17

第三十一篇:!pci of WinDbg的相关文章

mysql 第三十一篇文章~jvm的知识与优化

一 简介: 今天咱们聊聊 jvm内存调优二 基础理论:   1 jvm 堆(heap)基本概念:       1 对于大多数应用来说,Java堆(Java Heap)是Java虚拟机所管理的内存中最大的一块.Java堆是被所有线程共享的一块内存区域,在虚拟机启动时创建.此内存区域的唯一目的就是存放对象实例,几乎所有的对象实例都在这里分配内存.       2 Java堆是垃圾收集器管理的主要区域,因此很多时候也被称做"GC堆".如果从内存回收的角度看,由于现在收集器基本都是采用的分代收

我的第三十一篇博客---mongo

mongo 进入Mongoshow dbs 展示出mongo里数据库有哪些db 显示当前数据库use admin 切换到admin这个数据库show collections 展示里面的集合 db.info.insert({'name':'zhangsan','age':20}) 向当前数据库info列里插入这项数据db.info.find() 查询info里的数据db.dropDatabase() 删除当前的数据库 mongodb集合的命令不手动创建集合:向不存在的集合中第一次加入数据时,集合会

第三十一篇、iOS 9版本适配

1.网络适配(强制回退HTTP) 为了强制增强数据访问安全, iOS9 默认会把 所有的http请求 所有从NSURLConnection . CFURL . NSURLSession发出的 HTTP 请求,都改为 HTTPS 请求:iOS9.x-SDK编译时,默认会让所有从NSURLConnection . CFURL . NSURLSession发出的 HTTP 请求统一采用TLS 1.2 协议.因为 AFNetworking 现在的版本底层使用了 NSURLConnection ,众多Ap

开始写游戏 --- 第三十一篇

今天: 1.增加物品使用组件 2.增加物品使用功能.增加蓝条 上图: 1.增加物品使用组件 { 效果图: 代码: } 2.增加物品使用功能.增加蓝条 { 效果图: 这个录制软件不知道除了啥问题...居然录制出现绿屏的情况. 代码: } 原文地址:https://www.cnblogs.com/dmc-nero/p/12088028.html

Cocos2dx 3.0 过渡篇(三十一)ValueVector和Vector不得不说的故事

本文投票地址:http://vote.blog.csdn.net/Article/Details?articleid=37834689 前天看到一个颇为纠结的选择题:有一天你遇到一个外星人,这时外星人很热情的邀请你到他们星球去玩,你如何选 1:去,但是你有可能永远不能在回来.2:不去,但是外星人会消去你的记忆 这问题很刺激有木有?!看似简单的一个问题,不同的答案却隐藏着不同的含义.------------------鱼与熊掌不可兼得,类似这种例子生活中会经常碰到.同样的,如果你有去了解过Coco

Python开发【第二十一篇】:Web框架之Django【基础】

Python开发[第二十一篇]:Web框架之Django[基础] 猛击这里:http://www.cnblogs.com/wupeiqi/articles/5237704.html Python之路[第十六篇]:Django[基础篇] Python的WEB框架有Django.Tornado.Flask 等多种,Django相较与其他WEB框架其优势为:大而全,框架本身集成了ORM.模型绑定.模板引擎.缓存.Session等诸多功能. 基本配置 一.创建django程序 终端命令:django-a

SQL Server 索引 之 书签查找 <第十一篇>

一.书签查找的概念 书签可以帮助SQL Server快速从非聚集索引条目导向到对应的行,其实这东西几句话我就能说明白. 如果表有聚集索引(区段结构),那么书签就是从非聚集索引找到聚集索引后,利用聚集索引定位到数据.此处的书签就是聚集索引.如果表没有聚集索引(堆结构).那么扫描非聚集索引后,通过RID定位到数据,那么此处书签就是RID. 所谓的书签查找,就是通过聚集索引,然后利用聚集索引或RID定位到数据. 不论表示堆结构还是区段结构,数据的存放都是数据库文件的某文件->某页->某行,因此定位数

【FastDev4Android框架开发】RecyclerView完全解析之下拉刷新与上拉加载SwipeRefreshLayout(三十一)

转载请标明出处: http://blog.csdn.net/developer_jiangqq/article/details/49992269 本文出自:[江清清的博客] (一).前言: [好消息]个人网站已经上线运行,后面博客以及技术干货等精彩文章会同步更新,请大家关注收藏:http://www.lcode.org 话说RecyclerView已经面市很久,也在很多应用中得到广泛的使用,在整个开发者圈子里面也拥有很不错的口碑,那说明RecyclerView拥有比ListView,GridVi

第十一篇 Integration Services:日志记录

本篇文章是Integration Services系列的第十一篇,详细内容请参考原文. 简介在前一篇,我们讨论了事件行为.我们分享了操纵事件冒泡默认行为的方法,介绍了父子模式.在这一篇,我们会配置SSIS内置日志记录.我们会演示简单和高级日志配置,保存和查看日志配置,生成自定义日志消息.SSIS任务事件打开Precedence.dtsx包.你的控制流面板应该如图11.1所示:图11.1在第九篇和第十篇,我们关注在序列容器1.我们在Script Task 4和序列容器1上创建了OnError事件处