当前位置:  开发笔记 > 编程语言 > 正文

在Linux/x86上实现多消息MSI吗?

如何解决《在Linux/x86上实现多消息MSI吗?》经验,为你挑选了1个好方法。

我正在研究一个FPGA端点的网络驱动程序,它支持PCIe总线上的多消息MSI中断(不是msix).主处理器是运行在CentOS上的x86 Intel i7 620LM,内核为4.2.

FPGA端点正确地在其MSI功能寄存器中公布多个msi向量(0x101 = 32个可能的总向量).

据我所知,内核4.2中添加了多消息功能.不幸的是,当我打电话pci_enable_msi_range(pdev, 1, 32);它只返回1.当我打电话给pci_msi_vec_count(pdev);它返回32.我能够在一个向量上请求一个irq处理程序,它可以按预期工作.

有谁知道在x86架构上的Linux中是否实际支持多消息MSI向量?

更新: 我能够使用不同的SBC和i7-4700EQ处理器启用所有32个MSI向量.这是一个4.4-rc1内核.

更新:也 适用于4.2.

更新: 在这种情况下,问题出在coreboot中.一旦电路板供应商提供更新,我就能够使多个矢量工作.



1> 小智..:

我在Intel机器上使用多个MSI时也遇到了问题,与Linux内核版本无关.经过大量的摆弄后,我意识到在BIOS中启用VT-d解决了这个问题(在Linux 4.6内核上测试过).我认为这是因为为了在x86上支持多个MSI,Linux内核需要支持中断重映射,这是VT-d提供的功能之一.

推荐阅读
拾味湖
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有