加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

linux-kernel – Linux PCI设备驱动程序 – 总线v.内核IRQ

发布时间:2020-12-13 23:07:59 所属栏目:Linux 来源:网络整理
导读:我正在为 Linux中的PCIe卡编写设备驱动程序.我试图在我的驱动程序中使用中断. 读取PCI配置寄存器的“IRQ线”部分(偏移量0x3C)报告设备的已分配IRQ线为11. lspci -b -vv还报告我的设备的中断号为11. 继续它变得奇怪… cat / sys / bus / pci / devices / my_d
我正在为 Linux中的PCIe卡编写设备驱动程序.我试图在我的驱动程序中使用中断.

读取PCI配置寄存器的“IRQ线”部分(偏移量0x3C)报告设备的已分配IRQ线为11. lspci -b -vv还报告我的设备的中断号为11.

继续它变得奇怪… cat / sys / bus / pci / devices /< my_device> / irq报告中断号为19. lspci -vv也报告中断号为19.

在我的驱动程序中请求11不起作用.如果我在驱动程序中请求19,我就可以很好地捕获中断.

是什么赋予了?

谢谢!!!

解决方法

我认为它与“物理”和“虚拟”IRQ线之间的区别有关.由于处理器具有有限数量的物理IRQ线,因此它分配虚拟IRQ线以允许PCI设备的总数超过物理线的数量.

在这种情况下,19是您的虚拟IRQ线(由处理器识别),而11是物理线(由PCI设备识别).

顺便说一下,你应该真正从该设备的struct pci_dev获取IRQ号,因为它们是动态生成的.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读