AMDGPU DebugFS

amdgpu 驱动程序提供了一些 debugfs 文件,以帮助调试驱动程序中的问题。 这些文件通常位于 /sys/kernel/debug/dri/<num> 中。

DebugFS 文件

amdgpu_benchmark

使用驱动程序用于 GPU 内存分页的 DMA 引擎运行基准测试。 将一个数字写入文件以运行测试。 结果将写入内核日志。 VRAM 是设备内存 (dGPU) 或划分出的内存 (APU),而 GTT(图形转换表)是 GPU 可访问的系统内存。 提供以下测试

  • 1:简单测试,VRAM 到 GTT 和 GTT 到 VRAM

  • 2:简单测试,VRAM 到 VRAM

  • 3:GTT 到 VRAM,缓冲区大小扫描,2 的幂

  • 4:VRAM 到 GTT,缓冲区大小扫描,2 的幂

  • 5:VRAM 到 VRAM,缓冲区大小扫描,2 的幂

  • 6:GTT 到 VRAM,缓冲区大小扫描,常见显示尺寸

  • 7:VRAM 到 GTT,缓冲区大小扫描,常见显示尺寸

  • 8:VRAM 到 VRAM,缓冲区大小扫描,常见显示尺寸

amdgpu_test_ib

读取此文件可在所有内核管理的环上运行简单的 IB(间接缓冲区)测试。 IB 通常是由用户空间应用程序生成的命令缓冲区,这些缓冲区被提交到内核以便在特定的 GPU 引擎上执行。 这只是运行内核中包含的简单 IB 测试。 这些测试是特定于引擎的,并验证 IB 提交是否有效。

amdgpu_discovery

提供对 GPU 提供的 IP 发现二进制文件的原始访问。 读取此文件以访问原始二进制文件。 这对于验证 IP 发现表的内容很有用。 它是芯片特定的。

amdgpu_vbios

提供对 GPU 中 ROM 二进制镜像的原始访问。 读取此文件以访问原始二进制文件。 这对于验证视频 BIOS ROM 的内容很有用。 它是板特定的。

amdgpu_evict_gtt

从 GTT 内存池中逐出所有缓冲区。 读取此文件可从该池中逐出所有缓冲区。

amdgpu_evict_vram

从 VRAM 内存池中逐出所有缓冲区。 读取此文件可从该池中逐出所有缓冲区。

amdgpu_gpu_recover

触发 GPU 重置。 读取此文件可触发重置整个 GPU。 当前在 GPU 上运行的所有工作都将丢失。

amdgpu_ring_<name>

提供对每个环 <name> 的内核管理的环形缓冲区的读取访问。 这些对于调试特定环上的问题很有用。 环形缓冲区是 CPU 向 GPU 发送命令的方式。 CPU 将命令写入缓冲区,然后要求 GPU 引擎处理它。 这是环形缓冲区的原始二进制内容。 使用像 UMR 这样的工具将环解码成人类可读的形式。

amdgpu_mqd_<name>

提供对内核驱动程序管理的环 <name> 的内核管理的 MQD(内存队列描述符)的读取访问。 MQD 定义了环的功能,并在环未连接到硬件时用于存储环的状态。 驱动程序将请求的环功能和元数据(环本身和关联缓冲区的 GPU 地址)写入 MQD,固件使用 MQD 在环映射到硬件插槽时填充硬件。 仅在使用 MQD 的引擎上可用。 这提供了对原始 MQD 二进制文件的访问。

amdgpu_error_<name>

提供了一个接口,用于在与环 <name> 关联的 dma 栅栏上设置错误代码。 指定的错误代码会传播到与环关联的所有栅栏。 使用此功能可将栅栏错误注入到环中。

amdgpu_pm_info

提供有关 GPU 的电源管理功能和状态的人类可读的信息。 这包括当前的 GFX 时钟、内存时钟、电压、平均 SoC 功耗、温度、GFX 负载、内存负载、SMU 功能掩码、VCN 功耗状态、时钟和电源门控功能。

amdgpu_firmware_info

列出 GPU 使用的所有固件的固件版本。 只有版本不为 0 的条目才有效。 如果版本为 0,则该固件对 GPU 无效。

amdgpu_fence_info

显示每个内核驱动程序管理的环的最后发出信号和发出的栅栏序列号。 栅栏与提交到引擎的操作相关联。 发出的栅栏已提交到环,发出信号的栅栏已由 GPU 发出信号。 具有较大发出栅栏值的环具有仍在由拥有该环的引擎处理的未完成工作。 当发出和发出信号的栅栏值相等时,环处于空闲状态。

amdgpu_gem_info

列出使用 GPU 的所有 PID 以及它们已分配的 GPU 缓冲区。 这列出了缓冲区大小、池(VRAM、GTT 等)和缓冲区属性(需要 CPU 访问、CPU 缓存属性等)。

amdgpu_vm_info

列出使用 GPU 的所有 PID 以及它们已分配的 GPU 缓冲区,以及这些缓冲区相对于该进程的 GPU 虚拟地址空间的状态(例如,已逐出、空闲、无效等)。

amdgpu_sa_info

打印内核驱动程序中子分配管理器的所有子分配 (sa)。 打印与每个子分配关联的 GPU 地址、大小和栅栏信息。 子分配在内核驱动程序内部用于各种用途。

amdgpu_<pool>_mm

打印有关内存池 <pool> 的 TTM 信息。

amdgpu_vram

提供对 VRAM 的直接访问。 供 UMR 等工具用于检查 VRAM 中的对象。

amdgpu_iomem

提供对 GTT 内存的直接访问。 供 UMR 等工具用于检查 GTT 内存。

amdgpu_regs_*

提供对 GPU 上各种寄存器光圈的直接访问。 供 UMR 等工具用于访问 GPU 寄存器。

amdgpu_regs2

提供 UMR 用于与 GPU 寄存器交互的 IOCTL 接口。

amdgpu_sensors

提供一个接口,用于查询 GPU 功率指标(温度、平均功率等)。 供 UMR 等工具用于查询 GPU 功率指标。

amdgpu_gca_config

提供一个接口,用于查询 GPU 详细信息(图形/计算阵列配置、PCI 配置、GPU 系列等)。 供 UMR 等工具用于查询 GPU 详细信息。

amdgpu_wave

用于从硬件查询 GFX/计算波信息。 供 UMR 等工具用于查询 GFX/计算波信息。

amdgpu_gpr

用于从硬件查询 GFX/计算 GPR(通用寄存器)信息。 供 UMR 等工具用于调试着色器时查询 GPR。

amdgpu_gprwave

提供 UMR 用于与着色器波交互的 IOCTL 接口。

amdgpu_fw_attestation

提供了一个接口,用于读取固件证明记录。