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

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

相关推荐
0基础学习者5 小时前
跨时钟域处理
fpga开发·verilog·数字ic
Maple_land6 小时前
Linux复习:冯·诺依曼体系下的计算机本质:存储分级与IO效率的底层逻辑
linux·运维·服务器·c++·centos
李的阿洁7 小时前
k8s中的容器服务
linux·容器·kubernetes
谢景行^顾7 小时前
数据结构知识掌握
linux·数据结构·算法
FPGA_小田老师8 小时前
Xilinx FIFO Generate IP核(8):FIFO设计常见问题与解决方案
fpga开发·fifo generate·fifo常见问题·fifo异常定位·fifo丢数·fifo读数重复
人工智能训练9 小时前
如何在 Ubuntu 22.04 中安装 Docker 引擎和 Linux 版 Docker Desktop 桌面软件
linux·运维·服务器·数据库·ubuntu·docker·ai编程
Maple_land9 小时前
Linux复习:系统调用与fork
linux·运维·服务器·c++·centos
范纹杉想快点毕业9 小时前
100道关于STM32的问题解答共十万字回答,适用入门嵌入式软件初级工程师,筑牢基础,技术积累,校招面试。
驱动开发·单片机·嵌入式硬件·fpga开发·硬件工程
无聊的小坏坏10 小时前
Poll 服务器实战教学:从 Select 迁移到更高效的多路复用
linux·服务器·poll·io多路复用
WAsbry10 小时前
InputConnection机制与跨进程文本操作的工程实践
android·linux