PCI express 中断机制

PCIe 中断机制可以分为两类,INTx 和 MSI/MSI-X,INTx 是基于中断引脚的, MSI/MSI-X 是基于带内消息传输的,PCIe 的中断兼容 PCI 设备的中断机制,INTx 是比较传统的中断方式,不支持多核的处理器,spec 上建议去实现 MSI/MSI-X 机制。

INTx

PCI 中关于 INTx 的一些要点:

中断方式为 INTx 的设备功能要实现的寄存器叫 Interrupt line register ,中断线寄存器是一个8位的寄存器,用于通信中断线路由信息。寄存器是读/写的,必须由任何使用中断引脚的设备(或设备功能)来实现。软件在初始化和配置系统时将路由信息写入该寄存器。这个寄存器内容为中断引脚连接到中断控制器上的哪个输入,设备的驱动或者操作系统根据这个信息知道中断优先级中断、中断向量。中断引脚寄存器告诉设备(或设备功能)使用哪个中断引脚。值1对应INTA#。值2对应于INTB#。值3对应于INTC#。值4对应于INTD#。不使用中断引脚的设备(或设备功能)必须在这个寄存器中放一个0。

一旦INTx# 信号被断言,它将保持断言状态,直到设备驱动程序清除挂起的请求。当请求被清除时,设备解除其 INTx# 信号。PCI为单一功能设备定义了一条中断线,为多功能设备或连接器定义了四条中断线 INTA# - INTD#。对于单一功能的设备,只有 INTA #可以使用其他三条中断线没有意义。

中断线到系统中断信号的一个映射:

到了 PCIe 时代,INTx 也是用 message 实现的,叫虚拟中断线,有些 PCI 设备不支持 MSI 中断机制的,只能用中断线,搞一个虚拟中断线。在 PCI 设备发出INTx中断请求时,PCIe 桥将该INTx中断信号转换为INTx中断消息报文,并向Root Complex提交中断请求。这个中断消息包含两类,Assert_INTx 和 Deassert_INTx,x还是有 ABCD 四个,那这样中断消息报文就有8种。虚拟中断线的方式 PCIe 设备也可以用,这是可以去选择的。

可以通过配置空间中的配置命令寄存器(Configuration Command Register)来禁止INTx中断机制

INTx中断线在未来是可能被弃用的,所以尽量选择MSI/MSI_X中断机制。

配置空间结构样例

字节地址

配置空间寄存器

PCIe规范中的对应部分

0x000-0x03C

PCI Header Type 0配置寄存器

Type 0 Configuration Space Header

0x040-0x04C

电源管理

PCI Power Management Capability Structure

0x050-0x05C

MSI Capability结构

MSI Capability Structure,也可参考PCI Local Bus Specification

0x060-0x06C 保留 N/A

0x070-0x0A8

PCI Express Capability结构

PCI Express Capability Structure

0x0B0-0x0B8

MSI-X Capability结构

MSI-X Capability Structure,也可参考PCI Local Bus Specification

0x0BC-0x0FC 保留 N/A
0x100-0x134 高级错误报告(AER)(仅PF) Advanced Error Reporting Capability
0x138-0x184 保留 N/A

0x188-0x1B0

下游PCI Express扩展Capability头

PCI Express Extended Capability

0x1B4-0xB7C

保留

N/A

0x1B8-0x1F4 SR-IOV Capability结构 Single Root I/O Virtualization and Sharing Specification, Rev,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值