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

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

相关推荐
大白的编程日记.17 分钟前
【Linux学习笔记】理解一切皆文件实现原理和文件缓冲区
linux·笔记·学习
孞㐑¥17 分钟前
Linux之进程控制
linux·开发语言·c++·经验分享·笔记
愚润求学41 分钟前
【Linux】简单设计libc库
linux·运维·开发语言·c++·笔记
程序员JerrySUN1 小时前
《驱动开发硬核特训 · 专题篇》:深入理解 I2C 子系统
驱动开发
chennalC#c.h.JA Ptho1 小时前
Bodhi linux 系统详解
linux·经验分享·笔记·系统架构·系统安全
sukalot1 小时前
window 显示驱动开发-将虚拟地址映射到内存段(二)
驱动开发
碎碎思1 小时前
FPGA+ESP32 = GameBoy 是你的童年吗?
fpga开发
敲上瘾2 小时前
MySQL数据库表的约束
linux·数据库·sql·mysql·数据库开发·数据库架构·数据库系统
u0109362652 小时前
Linux电源管理(五),发热管理(thermal),温度控制 (结合设备树 和ACPI Source Language(ASL)分析)
linux
itachi-uchiha2 小时前
Linux上的rm和srm 命令
linux·运维·服务器