PCIE中断介绍

news/2024/11/22 7:25:54/

PCIE中断简介

PCIe有三种中断,分别为INTx中断,MSI中断,MSI-X中断,其中INTx是可选的(Legacy),MSI/MSI-X是必须实现的。

INTx:是开始PCI时期的产物,为了兼容PCI的INTA,INTB,INTC,INTD四个中断线而采用的一种中断机制。由于仅支持四个中断,且采用一个状态来控制,这种机制导致多中断场景软件处理复杂特别是有中断嵌套的场景(由于支持中断比较少,会有公用一个状态信号),比较多的PCIe设备都没有支持该特性。

MSI:message signal interrupt, 是PCI设备通过写一个特定消息到特定地址,从而触发一个CPU中断,最大支持32个中断。

MSI对比INTx 主要有以下几个优点:

1、中断独立,INTx4个中断公用一个状态信号,而MSI所有中断都是相互独立,软件处理方方便

2、MSI支持的中断数量更多,且不依赖IO,节省IO资源。

MSI-x:由于MSI中断存在仅支持32个中断,中断号必须要连续等限制,PCIe 3.0版本在MSI的基础上发展出了MSI-x,最大支持2048个中断,中断号可以不连续。

这些中断方式在驱动开发过程使用

    驱动开发中,大部分困难工作已经在PCI层为驱动完成了。驱动程序只需请求 PCI 层为此设备设置 MSI 功能。

  • 要自动使用 MSI 或 MSI-X 中断向量,请使用以下函数:
int pci_alloc_irq_vectors(struct pci_dev *dev, unsigned int min_vecs,unsigned int max_vecs, unsigned int flags);

    它为 PCI 设备分配最多max_vecs个中断向量。它返回申请的vectors数量负数。如果设备对vectors的最小数量有要求,驱动程序可以传递一个min_vecs参数配置这个限制,如果它不能满足vectors的最小数量,PCI core 将返回 -ENOSPC

    flags 参数用于指定设备和驱动程序可以使用哪种类型的中断(PCI_IRQ_LEGACY、PCI_IRQ_MSI、PCI_IRQ_MSIX)。一个方便的简写 (PCI_IRQ_ALL_TYPES) 也可用于请求任何可能的中断类型。如果设置了PCI_IRQ_AFFINITY标志,pci_alloc_irq_vectors()将在可用 CPU间广播中断。

上面pci_alloc_irq_vectors分配好的IRQ存放在dev->msi_list列表的msi_entry中,可以通过for_each_msi_entry遍历每个IRQ:

for_each_msi_entry(desc, dev){request_irq(desc->irq, handler, flags, name, dev)
}

MSI-x中断如何产生

下图是ARMv8架构下的主要经过的模块,主要流程如下

 (1)HOST枚举到EP PF设备,配置MSI-x table
(2)EP设备通过读取vector table,获取到MSI-x中断对应的message address,构造一个TLP包,往message address地址里面写中断信息。
(3)PCIE RC收到包判断是个TLP写后,将写操作转到总线,并返回ACK
(4)GIC中的ITS检测到对应DDR有变化,则获取设备和中断信息后分发到经GIC分发到各个CPU核上。
 


http://www.ppmy.cn/news/507182.html

相关文章

PCI设备编号

参考理解文档:https://wenku.baidu.com/view/23335dd349649b6648d747bf.html 1.PCI设备编号 每一个PCI device都有其unique PFA(PCI Fcntion Address) PFA由 bus number、device number、function number组成 一条PCI总线支持256个PFA,即支持256个PCI…

PCI bar 解析

只要是接入系统的 pci 设备就需要和系统软件进行交互,设备和系统之间的交流主要包含以下两部分: 1,系统要能访问到设备的寄存器 用于控制设备行为,包括DMA,数据收发等;设备通过寄存器报告自身的状态&…

PCI、PCIE配置空间的访问

一. 使用PCI兼容性配置访问机制 根据协议,x86上使用了两个I/O端口寄存器(OUT 和 IN 在汇编中是端口读写操作指令。端口是主机与外设进行数据交换使用的,分为数据端口,状态端口和控制端口三种。PC机给每一个端口分配了一个地址&am…

PCI设备与PCI桥的配置空间

PCI配置空间 HOST主桥通过配置读写事务报文访问设备的配置空间,PCI总线规定了三种类型的PCI配置空间。配置空间中出现的地址都是PCI总线域的地址。 (1)Agent设备配置空间(HeaderType.HeaderLayout0) (2)Bridge桥配置空间(HeaderType.HeaderLayout1) (3)Cardbus桥…

PCI-PCIE中断机制之一

PCI总线使用INTA#、INTB#、INTC#和INTD#信号向处理器发出中断请求。这些中断请求信号为低电平有效,并与处理器的中断控制器连接。在PCI体系结构中,这些中断信号属于边带信号(Sideband Signals),PCI总线规范并没有明确规…

PCI总线原理

PCI即 Peripheral Component Interconnect,中文意思是“ 外围器件互联”,是由PCISIG (PCI Special Interest Group)推出的一种局部并行总线标准。在现在电子设备中应用非常广泛,下面我详细介绍下PCI总线的工作原理,希望对大家有…

pcie应用记录 - pcie中断

项目场景: (1)fpga与国产龙芯3A3000 cpu主板通过pcie总线进行通信; (2)主板采用rework国产实时嵌入式操作系统,fpga部分为xlinx a7系列及 xilinx 7x pcie ip核; (3&…

PCI小结

几个基本的问题: 1) 注册函数的问题:因为编写的PCI设备驱动,是为某一具体设备服务,而这一具体设备,虽为PCI设备,但其本质仍可划分为,字符设备,网络设备等。因此在驱动程…