【PCIe 总线及设备入门学习专栏 9.1 -- PCIe AER 中的 aer_layer 与 aer_agent】

文章目录

  • [AER(Advanced Error Reporting)](#AER(Advanced Error Reporting))
  • [aer_layer=Transaction Layer 的含义](#aer_layer=Transaction Layer 的含义)
    • [常见 Transaction Layer 错误类型](#常见 Transaction Layer 错误类型)
  • [aer_agent=Requester ID 的含义](#aer_agent=Requester ID 的含义)
      • [Requester ID = 作为 TLP 发起者的设备 侦测到错误](#Requester ID = 作为 TLP 发起者的设备 侦测到错误)
  • 日志示例解读
  • [Requester ID 的意义 --- 如何定位设备?](#Requester ID 的意义 — 如何定位设备?)
  • 在实际系统中的典型场景
      • [DMA 发起非法访问](#DMA 发起非法访问)
      • [RC 下发非法 TLP(Host 代码 Bug)](#RC 下发非法 TLP(Host 代码 Bug))
      • [EP/RC 返回 Completion 异常](#EP/RC 返回 Completion 异常)
      • [中间设备(PCIe Switch)校验失败](#中间设备(PCIe Switch)校验失败)
  • 总结

AER(Advanced Error Reporting)

AER 是 PCIe 协议用于增强错误检测与报告的机制,主要用于捕捉:

  • 链路级错误(Physical Layer)

  • 数据链路级错误(Data Link Layer)

  • 传输层错误(Transaction Layer)

  • 协议违规(Protocol Violations)

  • TLP / DLLP 格式错误

当系统内核或 PCIe RC(Root Complex)侦测到错误时,会在 dmesg 或 AER trace 中打印:

makefile 复制代码
AER: aer_layer=Transaction Layer, aer_agent=Requester ID

aer_layer=Transaction Layer 的含义

PCIe 是三层架构:

层级 作用
Physical Layer 电气、编码、SERDES
Data Link Layer (DLL) ACK/NAK、重传、Sequence Number
Transaction Layer (TL) 构造/解析 TLP,地址/命令协议,Completer 操作

所以 Transaction Layer 报错 表示:

错误发生在 PCIe TLP(Transaction Layer Packet)处理过程中,通常属于:

常见 Transaction Layer 错误类型

错误类型 说明
Malformed TLP TLP 格式非法(Header 无效、长度错误)
Unsupported Request 接收到对端不支持的请求
Completer Abort (CA) Device 无法完成请求 Completioin
Completion Timeout (CTO) 没收到 Completion,超时
Unexpected Completion 未请求却收到 Completion
Poisoned TLP (EP-bit) TLP 被标记为 EP(poisoned)
ACS Violation 隔离检查失败

当 aer_layer=Transaction Layer,就说明:

错误不是链路物理问题,而是协议级(TLP)的问题

通常与 Host、RC、Endpoint 的 TLP 处理有关。

aer_agent=Requester ID 的含义

AER 日志中会告诉你是哪一个"Agent"检测到错误:

aer_agent 含义
Requester ID 发起 TLP 的设备发现错误
Completer ID 作为 Completion 处理者的设备发现错误
Receiver ID 接收该 TLP 的设备检测到错误
Transmitter ID 发送该 TLP 的设备发现错误

其中:

Requester ID = 作为 TLP 发起者的设备 侦测到错误

Requester ID 在 PCIe 中代表:

vbnet 复制代码
Bus:Device.Function of the device that initiated the request

解释:

  • 此错误来源于 发起 TLP 的设备(Requester)

  • Requester 在收到 Peer/RC 返回的 Completion 或 DLL 错误指示时,发现了问题

  • 因此 TLP 生命周期中,Requester 认为"我发出去的请求出现了异常"

日志示例解读

例如:

vbnet 复制代码
AER: Corrected error received: id=00e0
AER:   aer_layer=Transaction Layer
AER:   aer_agent=Requester ID
AER:   status=0x00000040 (Unsupported Request)

解释:

  • Transaction Layer → 收到的 Completion 或响应 TLP 在协议层非法

  • Requester ID → 错误是发起访问的一方(通常是 RC 或 EP endpoint DMA)发现的

  • Unsupported Request → 对端设备不支持此请求,返回 UR

此错误一般来源于:

  • DMA 发起无效地址访问

  • RC 下发了 EP 不支持的 TLP(如 I/O 访问)

  • TLP Format/Type 不符合规范

  • 访问 BAR 未启用或窗口越界

Requester ID 的意义 --- 如何定位设备?

Requester ID 通常会打印为:

ini 复制代码
id=00e0

PCIe ID 编码(PCI config space header)为:

javascript 复制代码
Bits [15:8] = Bus Number
Bits [7:3]  = Device Number
Bits [2:0]  = Function Number

例:

ini 复制代码
id=00e0 → Bus 00, Device 0x1c (28), Function 0

你可以用:

nginx 复制代码
lspci -s 00:1c.0 -vvv

查看相关设备。

在实际系统中的典型场景

以下为常见导致 Transaction Layer + Requester ID 的情况:

DMA 发起非法访问

  • DMA Engine 发出的地址超出 BAR

  • 未设置 IOMMU,虚拟地址非法

  • 访问 RC 不允许的空间(如 PCIe 配置空间)

RC 下发非法 TLP(Host 代码 Bug)

  • 内核驱动读写未映射地址

  • 访问未启用的 BAR

  • I/O Space 访问 EP 不支持导致 UR

EP/RC 返回 Completion 异常

  • EP 返回了 Malformed TLP

  • Completion Lost 或 Timeout

中间设备(PCIe Switch)校验失败

  • Switch 判定 TLP 格式错误

  • ACS/ATS 请求不被允许

总结

字段 意义
aer_layer=Transaction Layer 错误发生在 PCIe 事务层(TLP 协议级错误)
aer_agent=Requester ID 发起 TLP 的设备(DMA/RC/EP)发现错误

因此:

该 AER 日志表示:发起 PCIe 请求的设备在处理返回的 Completion 或协议时发现 TLP 错误。

多数情况由 非法访问、UR、格式错误、Completion Timeout 导致。

相关推荐
吃好睡好便好28 分钟前
说说科学爬山
学习·生活
lunzi_08261 小时前
【学习笔记】《Python编程 从入门到实践》第8章:函数定义、参数传递与模块导入
笔记·python·学习
智慧光迅AINOPOL2 小时前
校园在线巡课系统方案:督导全覆盖
网络·全光网解决方案·全光网·校园全光网·校园全光网解决方案
酉鬼女又兒2 小时前
零基础入门计算机网络:网络层核心任务、三大关键问题、两种服务类型与 TCP/IP 网际层协议体系全解析
服务器·网络·网络协议·tcp/ip·计算机网络·php·求职招聘
零陵上将军_xdr2 小时前
后端转全栈学习-Day5-JavaScript 基础-3
开发语言·javascript·学习
Urbano2 小时前
工装制作全流程科普:从面料到自动化生产
网络·人工智能
2401_868534783 小时前
网规笔记 | 真题解析:2018年11月软考网规-网络安全案例分析
网络
05大叔3 小时前
对话系统学习,问答型数据库,闲聊型对话数据库
学习
nashane3 小时前
HarmonyOS 6商城开发学习:抢票倒计时与系统日历提醒——票务类场景的完整落地思路
学习·华为·harmonyos
Gauss松鼠会3 小时前
【GaussDB】GaussDB重要通信参数汇总
服务器·网络·数据库·sql·性能优化·gaussdb·经验总结