
pcie
文章平均质量分 56
pcie
站长漫谈
技术交流
展开
-
82599网卡的 MSI-X中断信息的收集(二)
从前一节可知道,MSI-X中断信息的最终的支持是通过函数ixgbe_acquire_msix_vectors来实现的,所以这里我们详细分析一下这个函数,看下Linux源代码是怎么收集MSI-X中断信息的。/** * ixgbe_acquire_msix_vectors - acquire MSI-X vectors * @adapter: board private structure * * Attempts to acquire a suitable range of MSI-X vect原创 2021-05-07 16:33:20 · 772 阅读 · 0 评论 -
82599网卡的 MSI-X中断分析分析(一)
驱动程序的结构体ixgbe_netdev_ops回调函数为:可以看到,打开设备时使用的函数是ixgbe_open,其是通过ixgbe_request_irq是进行中断初始化。其根据硬件资源的初始化的结果adapter->flags进行中断初始化。这里的中断分为三种方式,分别为MSI中断:IXGBE_FLAG_MSIX_ENABLEDMSI-X中断:IXGBE_FLAG_MSI_ENABLED默认为INTx中断。而关于中断flags的标识是由回调函数结构体的i..原创 2021-05-06 19:43:38 · 724 阅读 · 0 评论 -
PCIE INTx中断
PCI中可使用两种中断,一种是其离的INT 低电平硬件中断,另一种是PCI规范2.2定义的MSI消息中断MSI(MSI-X).每个物理设备设备可以实现最多4个中断信号INTa#,INTb#,INTc#,INTd#。由于PCI/E设备最多能支持8个功能,所以支持4个中断引脚。然而由于实现最多8个功能且所有功能都要求使用中断,所以必须使用共享中断信号(INTx#)。PCI/E设备INTx中断配置。在PCI/E的PCI配置寄存器中,寄存器布局如下:PCI设备用INT引脚产生中断信号。典型的情况就是PCI原创 2021-05-05 20:53:27 · 1643 阅读 · 0 评论 -
MSI和MSI-X对比(五)
MSI和MSI-X对比从INTx过渡到MSI,可以说是完全两套天壤之别的中断上报架构。一个是带外,一个是带内。而MSI-X则是以MSI为基础发展起来的,很多特性很类似。MSI-X某种程度上可以看做的MSI的一个超集。它和MSI一样,可以生成Memory Write事务,来向中断控制器报告中断。但是,MSI-X定义了一套新的capability structure,并且在Memory空间存储MSI-X中断地址表,可以处理更多的中断,也更灵活,在软件处理上也无法兼容MSI。下面简单列表对比一下两者的差转载 2021-05-05 12:08:37 · 1483 阅读 · 3 评论 -
MSI-X中断使用(四)
MSI-XCAP结构MSI-X和MSI最大的不同是messagedata、message address和status字段没有存放在设备的配置空间中,而是使用MSI-X Table structure和MSI-X PBA structure来存放这些字段。MSI-X Table structure和PBA structure存放在设备的BAR空间里,这两个structure可以map到相同BAR,也可以map到不同BAR,但是这个BAR必须是memory BAR而不能是IO BAR,也就是说这两个st转载 2021-05-05 12:06:14 · 2628 阅读 · 0 评论 -
MSI-X中断(三)
前面讲了MSI中断的机制,其实MSI-X Capability中断机制与MSI Capability的中断机制类似。既然机制类似,为啥还要需要引入MSI-X呢?回答这个问题前,我们先看看MSI有哪些限制?(1) MSI相关的寄存器都是在配置空间中,从Message Control寄存器multiple message Capble字段可以看出MSI最多支持32个中断向量,且必须是2n,也就是说如果一个function需要3个中断向量,必须申请4个才可以满足。(2) MSI要求中断控制器转载 2021-05-05 11:57:26 · 576 阅读 · 0 评论 -
MSI中断原理(二)
1、MSI中断MSI中断本质上是一个memory write,memory write的地址就是设备配置空间的MSI address寄存器的值,memory write的数据就是设备配置空间的MSI data寄存器的值。Message address寄存器和message data寄存器是调用pci_enable_msi时,系统软件填入的。也就是说,一个设备想产生一个MSI中断的话,只需要使用配置空间的message address寄存器和message data寄存器发起一个memor...转载 2021-05-05 11:53:51 · 3109 阅读 · 0 评论 -
PCIE的中断硬件中断线中断和MSI中断(一)
硬件中断线中断早期PCI时代,PCI设备的中断使用的是传统中断,也就是基于硬件中断线(INTx,每个设备有四条INTA\INTB\INTC\INTD)来向中断控制器(IO APIC)报告中断的产生。这个中断是多个设备(功能)共享的。中断产生后,系统中断服务程序再来轮询具体是哪个设备产生了中断。这显然很低效。MSI(Message SignaledInterrupt)中断PCI协议2.2引入了一个新的中断处理方式,即MSI(Message SignaledInterrupt)。有中断产..转载 2021-05-05 11:41:10 · 3672 阅读 · 0 评论 -
MSI及MSIX详解
1. 什么是MSIMSI全称Message Signaled Interrupt。当设备向一个特殊地址写入时,会向CPU产生一个中断,即也MSI中断。MSI能力最初在PCI 2.2里定义,在PCI 3.0里被强化,使得每个中断都可以单独控制。PCI 3.0还引入了MSI-X能力,相比MSI,每个设备可以支持更多的中断,并且可以独立配置。设备可以同时支持MSI和MSI-X,但同一时刻只能使能其中一种。2. 为什么使用MSI与传统引脚中断相比,有三个方面的优势。基于引脚的PCI中断经常在几个转载 2021-05-05 10:59:45 · 7046 阅读 · 0 评论