ATS失效请求报文问题的故障排除步骤

作者:文华财经随身行|分类:文华科技

作者:AMD 工程师 Iris Yang & Deepesh Man Shakya

本篇文章提供了解决 ATS 失效请求报文问题的故障排除步骤,主要聚焦在 CQ 接口上未显示主机发送的报文的情况。

ATS 失效使用

对于在支持地址转换服务 (ATS) 的 PCIe 系统中保持地址转换表的准确性而言,ATS 失效请求报文至关重要。

只要系统中包含执行地址转换的器件(如使用 I/O 存储器管理单元 (IOMMU) 的器件),那么这类系统就与 ATS 失效请求报文密不可分。AT 失效请求报文旨在通知 PCIe 器件,其地址转换高速缓存(包含器件地址与系统地址之间的映射)中的特定条目已过时,应使其失效。如果您遇到主机发送 ATS 失效请求报文但 CQ 侧未接收到该报文的情况,请按照以下步骤对问题进行调试。

确保 CQ 接口接收到 ATS 失效请求报文

检查 CQ 接口,验证是否存在 ATS 失效请求报文。

使用 CQ_tvalid 作为 ILA (Integrated Logic Analyzer) 捕获的触发器,在传输事务中仅有 ATS 失效报文或 TLP(传输事务层包)数量有限的情况下尤其如此。

c7c9cec4-41fc-11f0-b715-92fbcf53809c.png

ATS 报文格式如下:

以上截图来自《Versal Adaptive SoC CPM Mode for PCI Express 产品指南》(PG346) 中的“完成器请求描述符格式”:

https://docs.amd.com/r/3.1-English/pg346-cpm-pcie/Completer-Request-Descriptor-Formats

验证是否已从主机发送该报文

使用协议分析器检查是否已从主机发射了含“ATS_Invalidation_request”代码的报文。

协议分析器应明确显示正在发送此报文。建议您在观察到此报文缺失时对其进行验证。

如果您没有协议分析器,请跳过这一部分。以下截图显示的是出现 ATS 失效请求报文时,在协议分析器中应显示的内容。

c81e951c-41fc-11f0-b715-92fbcf53809c.png

确保已启用 ATS 功能

在 AMD Vivado Design Suite 中,导航至 IP 核配置 GUI。在“Advanced”选项下,验证 ATS 功能是否已启用。

确认 ATS 已启用

确保在 lspci 中已经显示 ATS 功能被启用并且在控制寄存器中 Host 已经将 ATS 使能位置位。

您可使用 lspci 命令完成此项检查,该命令会列出 PCI 器件及其配置。

c86f3f8a-41fc-11f0-b715-92fbcf53809c.png

验证 CPM 中的 ATS 支持寄存器

验证 ATS_cap_glbl_inv_ support_x 寄存器是否已启用。您可在 .cdo 文件中或通过 XSDB 进行此项检查,如下所示:

基于寄存器对 Versal Adaptive SoC CPM Mode for PCI Express 设计进行调试:

https://adaptivesupport.amd.com/s/article/1221922?language=zh_CN

c890dc30-41fc-11f0-b715-92fbcf53809c.png

在以下 CDO 截图中,对地址 0xfce89bcc 写入 1。此设置用于启用 ATS 全局失效。

c8b90bd8-41fc-11f0-b715-92fbcf53809c.png

确保报文路由寄存器配置正确

确保已正确设置报文路由寄存器,以便路由 ATS 报文。

通过设置 AXISTEN_IF_ENABLE_MSG_ROUTE 寄存器来启用 MSG_ROUTE。

为便于调试,请将 0xFFFFFFFF 写入该寄存器。如需了解每个位的定义,请参阅相关寄存器文档:

https://docs.amd.com/r/en-US/am012-versal-register-reference

c8e788fa-41fc-11f0-b715-92fbcf53809c.png

在以下截图中,对地址 0xfce88060 写入 0x0020000,这样仅启用 MSG_ROUTE 寄存器的第 17 位(失效请求)。

c918359a-41fc-11f0-b715-92fbcf53809c.png

总结

本文演示了验证 ATS 报文是否正确传播的调试步骤。以下是上述步骤的摘要。

确认 CQ 接口:使用 CQ_tvalid 确认正在接收 ATS 报文。

验证主机发射:使用协议分析器确保主机已发送“ATS_Invalidation_request”报文。

启用 ATS 功能:通过检查 lspci 日志,确认 ATS 已启用。

检查 ATS 寄存器:确保已通过 .cdo 或 XSDB 激活 ATS_cap_glbl_inv 寄存器。

配置报文路由:为调试目的,将 AXISTEN_IF_ENABLE_MSG_ROUTE 寄存器设置为 0xFFFFFFFF。

  • 随机文章
  • 热门文章
  • 热评文章
01 03月

2025-03-01 06:37:05

浏览36
返回
目录
返回
首页
Altium Designer的关键功能及其在芯片封装测试中的应用 物联网开发提速秘籍:LuatIO可视化GPIO工具,效率翻倍!