PCIe Capability结构寻址

文章介绍了PCIExpress设备的Type0和Type1ConfigurationSpaceHeader,重点在于CapabilityPointer在0x34h位置,它指示了一个Capability结构链表。每个Capability结构都有唯一ID,并通过指针链接,链表始于0x34。使用lspci命令可以查看设备的PCIe详细信息,例如设备的带宽(X1)等。
摘要由CSDN通过智能技术生成

Type 0/1 Configuration Space header

在了解PCIe capabliity结构之前,先了解一下2种header,一种是EP的,一种是RP和SW的

下图是Type 0 Configuration Space Header
Type 0 Configuration Space header for PCI Express device Functions.
在这里插入图片描述
下图是Type 1 Configuration Space header
Type 1 Configuration Space header for Switch and Root Ports
在这里插入图片描述
可以看到2种header 的0x34h位置都是Capability Pointer,接下来就需要用到这个头指针了

链表头指针0x34h

PCIe 总线规范要求其设备必须支持Capabilities 结构。在PCI 总线的基本配置空间中,包含一个Capabilities Pointer 寄存器,该寄存器存放Capabilities 结构链表的头指针。在一个PCIe 设备中,可能含有多个Capability 结构,这些寄存器组成一个链表

在这里插入图片描述
其中每一个Capability 结构都有唯一的ID 号,每一个Capability 寄存器都有一个指针,这个指针指向下一个Capability 结构,从而组成一个单向链表结构,这个链表的最后一个Capability 结构的指针为0。链表开始的指针地址为 0x34处的1byte数值

寄存器数值解析

lspci –v –s xx:xx.x 显示结果中的capability 代表了该设备支持的一些功能
在这里插入图片描述

我们可以通过“lspci –xxx –s xx:.x.x”命令来列出该设备的PCIe详细信息。这些内容存储在PCIe配置空间,它们描述的是PCIe本身的特性。
在这里插入图片描述

上面通过lspci -v -s xx:x.x 查到PCI Express 的capability 所在位置为0x70,再通过link status 寄存器offset 0x12h,查到该寄存器值为0x7c11
换成2进制0111110000010001

在这里插入图片描述
在这里插入图片描述
通过PCIe Spec可以查到 58:00.0这个设备带宽是X1 ,和系统下lspci查看的一致
在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值