DMAR: [INTR-REMAP] Present field in the IRTE entry is clear 的解决办法

问题描述

在使用FPGA开发PCIe的MSI-X中断相关功能时,一次测试过程中dmesg打印出如下错误,使用cat /proc/interrupts查看FPGA的PCIe驱动程序未收到MSIX中断。使用的系统为基于Intel x86_64的linux(RHEL8.9),基于Xilinx Ultrascale+HBM VCU128开发板作为PCIe终端设备进行开发。

DMAR: DRHD: handling fault status reg 2

DMAR: [INTR-REMAP] Request device [01:00.0] fault index 0x39 [fault reason 0x22] Present field in the IRTE entry is clear

错误分析

该错误报告是由一种虚拟化技术DMAR(DMA Remapping)产生,出现的原因在于系统BIOS开启了Interrupt Remapping选项,Intel IOMMU收到了未定义的中断请求后触发保护引起报错。关于Intel IOMMU的进一步介绍可参考其他资料,如DMAR(DMA remapping)与 IOMMU

进一步的,该错误是由于系统收到了来自FPGA错误的MSIX中断请求报文,进而导致系统触发的安全保护。因此即使在BIOS中关闭DMA Remapping选项不产生上述错误报告,驱动程序也不会接收到中断请求。

解决办法

检查FPGA侧MSIX中断相关信号的赋值是否满足协议要求(可查看文章),本文遇到的问题在于发送的Msg Data与MSIX Table中填入的Msg Data不匹配,进而导致的异常。

修正后的结果,无错误报告产生:

相关推荐
ZFB000120 小时前
【麒麟桌面系统】V10-SP1 2503 系统知识——添加用户
linux·运维·kylin
国科安芯20 小时前
卫星通讯导航FPGA供电单元DCDC芯片ASP4644S2B可靠性分析
单片机·嵌入式硬件·fpga开发·架构·安全性测试
ZFB000120 小时前
【麒麟桌面系统】V10-SP1 2503 系统知识——进入救援模式
linux·运维·kylin
RisunJan20 小时前
Linux命令-iptables-restore命令(从文件批量恢复 iptables 防火墙规则)
linux·运维·网络
hugerat1 天前
在AI的帮助下,用C++构造微型http server
linux·c++·人工智能·http·嵌入式·嵌入式linux
ha20428941941 天前
Linux操作系统学习记录之----自定义协议(网络计算器)
linux·网络·学习
想唱rap1 天前
MYSQL在ubuntu下的安装
linux·数据库·mysql·ubuntu
糖~醋排骨1 天前
DHCP服务的搭建
linux·服务器·网络
dust_and_stars1 天前
ubuntu24使用apt安装VS-code-server code-server
linux·服务器·windows
码农小韩1 天前
基于Linux的C++学习——循环
linux·c语言·开发语言·c++·算法