PCIE MSI特性

较早的 PCI 设备在 Configuration Space 中的 Capabilities List 本就是空的,他们认为Configuration Header Space 中的描述已经可以满足需求了。

后来的 PCI / PCIE 设备才支持MSI中断,你要判断一个 MSI 类型中断需要检查几点:

一是的 Status 寄存器,其中的 BIT4 为1 时才表明支持 Capabilities List,这时再从 Configuration Space 偏移 0x34 的 CapabilitiesPointer 中取得 Capabilities List,而这个 Capabilities List 对于 PCI 设备来说是可选的,这也就是为什么你测试有些 PCI 卡的 Capabilities Pointer 有效而有些无效了,但支持Capabilities List 并不表示就支持 MSI 中断。第二点你需要知道这时你得到的仅是Capabilities List 的根节点的指针,由它指向第一个 Capability Structure。而 CapabilitiesList 则是由多种 Capability Structure 组成的,如:POWER MGR,AGP,PCI­X/PCIE 当然也包括了 MSI/MSI­X。

虽说每个 Capability Structure 不一样,但其头部的两个字段 Capability ID与 Next Capability Pointer 是每个 Capability 都有的,Capability ID 具有唯一性,代表当前结构的类型(Capability ID = 5 表示为 MSI Structer),Next Capability Pointer 则表示指向下一个 Capability。也就是说当你拿到 Capabilities List 时需要遍历全部的 CapabilitiesList,其中 Capability ID = 5 的才是 MSI Structure,即表示当前设备支持 MSI 中断,而不是像你那样直接从 Configuration Header Space 取 Capabilities Pointer 在并从当中第一个Capability Structure 判断。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值