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不匹配,进而导致的异常。

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

相关推荐
156082072195 小时前
短波接收机灵敏度测试
fpga开发
loong_XL5 小时前
Windows WSL2 Ubuntu 搭建 Xvfb 虚拟桌面环境,完美支持多 Agent 隔离
linux·windows·ubuntu
大熊背5 小时前
树莓派 libcamera IPA 框架解析
linux·ipa·isppipeline
Horn Still Sounds5 小时前
Linux进程间通信:信号、消息队列、共享内存完整笔记
linux·网络·笔记
拂拉氏5 小时前
【知识讲解】 Linux进程的认识与创建
linux·进程
myy-learn6 小时前
27-进程通信
linux·服务器·网络
按时下班accept6 小时前
ERA5生成驱动LBM模型的数据
linux
高亦真6 小时前
今天是学习嵌入式的第32天
linux·学习·算法
gx23487 小时前
k8spod管理
linux·容器·kubernetes
susplus9 小时前
【linux应用软件编程】进程间的通信方式1【管道&IPC】
linux·进程通信·管道·ipc