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

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

相关推荐
人生百态,人生如梦28 分钟前
Ubuntu在低版本下使用ccswitch+claudecode(CCSwitch+Docker+Claude)连调教程
linux·ubuntu·docker·claudecode·ccswitch
byte轻骑兵1 小时前
【BlueZ】hciconfig 工具:蓝牙适配器管理实操 + 源码实现基础
linux·bluez·电脑蓝牙·嵌入式蓝牙
SKH.1 小时前
Linux驱动-系统移植
linux·服务器
根目录下的猫1 小时前
虚拟机复制过来运行时:“虚拟机使用的此版本,VMware Workstation 不支持的硬件版本。”错误解决办法,亲测可用
linux·运维·服务器·后端
硅基手札1 小时前
【串口技术系列文档 07】UART控制器寄存器详解
驱动开发·stm32·单片机·嵌入式硬件·mcu·计算机外设
硅基手札1 小时前
【串口技术系列文档 09】FIFO管理与流控
驱动开发·stm32·单片机·嵌入式硬件·mcu·计算机外设
硅基手札1 小时前
【串口技术系列文档 08】中断驱动vs轮询vs DMA
驱动开发·stm32·单片机·嵌入式硬件·mcu·计算机外设
yunwei371 小时前
eBPF 入门实践教程十七:编写 eBPF 程序统计随机/顺序磁盘 I/O
linux·后端·性能优化
帷幕落秋1 小时前
内存、虚拟内存与 OOM
linux·运维
dingdingfish1 小时前
TLPI 第41章 读书笔记:Fundamentals of Shared Libraries
linux·static·link·dynamic·library·tlpi