在PowerPC处理器系统中,MSI机制的实现过程是PCIe设备向MSIIR寄存器写入指定的数据。MPIC中断控制器发现该寄存器被写入后,将向处理器提交中断请求。处理器收到这个中断请求后,将通过读取MPIC中断控制器的ACK寄存器确定中断向量,并依此确定中断源。表10-3 MSIIR寄存器PCIe设备通过MSI机制,向此寄存器写入数据时,MSIR0~7寄存器的相应位SH0~31将有一位置1。......
2025-09-30
在Linux系统中,如果PCI/PCIe设备需要使用MSI-X中断机制,需要调用pci_enable_msix函数,pci_enable_msix函数调用的大多数函数与pci_enable_msi类似,本节并不会重复解释这些函数,该函数的实现如源代码15-14所示。
源代码15-14 pci_enable_msix函数
与pci_enable_msi_block函数不同,pci_enable_msix函数的入口参数包括一个msix_entry结构的entries链表(在使用这个entries链表之前需要将msix_entry.entry参数赋值),而nvec参数保存entries链表的长度。该函数首先对入口参数进行检查,然后调用msix_capabil-ity_init函数为PCIe设备分配多个中断向量号。msix_capability_init函数的实现与msi_capabil-ity_init函数的实现方法类似,本章对此不做进一步描述。
该函数成功返回后,PCIe设备将得到多个中断向量,并将结果放入pci_dev→msi_list和entries链表中,之后PCIe设备的Linux驱动程序可以使用多个request_irq函数注册相应的中断服务例程。
下文将以Intel的e1000e网卡驱动程序说明如何使用MSI-X中断机制挂接中断服务例程。在Linux中,与e1000e网卡相关的驱动程序在./drivers/net/e1000e/netdev.c文件中。其中MSI-X中断机制的初始化在e1000_probe→e1000_sw_init→e1000e_set_interrupt_capability函数中,该函数的实现如源代码15-15所示。(https://www.chuimin.cn)
源代码15-15 e1000e_set_interrupt_capability函数
当e1000e_set_interrupt_capability函数返回后,MSI-X中断机制使用的中断向量将被保存在adapter->msix_entries数组中,之后e1000_open→e1000_request_irq→e1000_request_msix函数将多次调用request_irq函数将e1000e使用的中断服务例程挂接到系统中断服务程序中,e1000_request_msix函数的实现如源代码15-16所示。
源代码15-16 e1000_request_msix函数
e1000_request_msix函数将“接收完成中断请求e1000_intr_msix_rx”、“发送完成中断请求e1000_intr_msix_tx”和“其他中断请求e1000_msix_other”分别注册。当有中断事件发生时,驱动程序不需要读取中断状态寄存器之后再进行处理,从而有效降低了系统延时。
相关文章
在PowerPC处理器系统中,MSI机制的实现过程是PCIe设备向MSIIR寄存器写入指定的数据。MPIC中断控制器发现该寄存器被写入后,将向处理器提交中断请求。处理器收到这个中断请求后,将通过读取MPIC中断控制器的ACK寄存器确定中断向量,并依此确定中断源。表10-3 MSIIR寄存器PCIe设备通过MSI机制,向此寄存器写入数据时,MSIR0~7寄存器的相应位SH0~31将有一位置1。......
2025-09-30
柱间支撑与柱的连接,以及在柱间支撑处吊车梁下翼缘的连接,承受着反复的水平制动力和卡轨力,应优先采用高强度螺栓。4)两个型钢构件采用高强度螺栓拼接时,由于型钢的抗弯刚度较大,不能保证摩擦面紧密贴合,故不能用型钢作为拼接件,而应采用钢板。5)高强度螺栓连接范围内,构件接触面的处理方法应在施工图中说明。......
2025-09-29
图1.10 调压调速静特性调速范围与静差率的关系 生产机械一般不仅要求转速能在一定范围内调节,并且要求负载等变化对转速的影响小,以保证生产过程的稳定性,提高产品质量。也就是说,要求在一定调速范围内,尽管负载变化,但静差率都小于规定指标。调速系统主要的抗扰性能指标有动态降落ΔCmax和恢复时间tv等,如图1.11b所示。......
2025-09-29
性能评估是目标识别系统设计的一个重要部分,它将决定系统是否满足特定应用的要求以及预期的作用。如果没有达到要求,设计者应当根据评估结果重新考虑和设计系统。为更全面地反映分类系统的性能,一种做法是选取查准率和查全率相等时的值来表示系统的性能,该值叫做平衡点值。对于分类的总体性能评估,有宏平均和微平均两种评估方式。显然,宏平均把类别作为最小的评价单位;微平均把个体样本作为最小评价单位。......
2025-09-29
图5.8战斗部爆炸能量输出结构对跑道毁伤模式的影响活性聚能战斗部毁伤机场跑道技术原理如图5.10所示。图5.9活性聚能战斗部毁伤跑道的技术原理与传统反跑道弹药相比,活性聚能战斗部除了单级化、小型化、结构简单、系统可靠性高等优势外,更重要的还在于3个方面。图5.10活性聚能战斗部反跑道典型毁伤模式......
2025-09-29
1 许多花鼓用精密的卡式轴承取代传统的散珠轴承。如果在拆下锁紧螺母和轴挡之后,看到扁平的塑料密封圈(见左图),那么这个花鼓用的就是卡式轴承。但是,仍然有一些密封卡式轴承花鼓维修起来并不是特别困难。有些花鼓装有这种可维修的密封卡式轴承,但是采用的轴杆设计却看起来无法拆卸。......
2025-09-30
Steven P.Vanderwiel与David J.Lilja总结了最近出现的各类数据预读机制,下面将以图3-11为例进一步探讨这些数据预读机制。处理器在第17~22时钟周期从存储器读取数据,并在第22个时钟周期继续执行第三阶段任务的8个时钟周期,之后访问存储器,此时也将发生Cache Miss。合理使用这些数据预读,完成同样的任务CPU仅需要28个时钟周期,从而极大提高了程序的执行效率,其执行过程如下。......
2025-09-30
相关推荐