MSM 崩溃转储格式

在 GPU 挂起后,MSM 驱动程序通过 /sys/kernel/dri/X/show 或 devcoredump (/sys/class/devcoredump/dcdX/data) 输出调试信息。本文档描述了输出的格式。

每个条目都采用“键: 值”的形式。节标题没有值,节的所有内容都将从标题缩进两个空格。每个节可能包含多个数组条目,其开头由一个 (-) 表示。

映射

kernel

生成转储的内核版本 (UTS_RELEASE)。

module

生成崩溃转储的模块。

time

崩溃时的内核时间,格式为秒.微秒。

comm

生成故障的二进制文件的 comm 字符串。

cmdline

生成故障的二进制文件的命令行。

revision

生成崩溃的 GPU ID,格式为核心.主版本号.次版本号.补丁级别,用点分隔。

rbbm-status

RBBM_STATUS 的当前值,显示崩溃时正在使用的顶级 GPU 组件。

ringbuffer

包含每个环形缓冲区内容的节。每个环形缓冲区都通过一个 ID 号标识。

id

环形缓冲区 ID(基于 0 的索引)。该节中的每个环形缓冲区都将拥有其唯一的 ID。

iova

环形缓冲区的 GPU 地址。

last-fence

在环形缓冲区上发出的最后一个栅栏

retired-fence

在环形缓冲区上退役的最后一个栅栏。

rptr

环形缓冲区的当前读指针 (rptr)。

wptr

环形缓冲区的当前写指针 (wptr)。

size

硬件中编程的环形缓冲区的最大大小。

data

环形缓冲区的内容,以 ascii85 编码。只会打印环形缓冲区的已用部分。

bo

如果可用,挂起的提交中的缓冲区列表。每个缓冲区对象都将拥有一个唯一的 iova。

iova

缓冲区对象的 GPU 地址。

size

缓冲区对象的分配大小。

data

缓冲区对象的内容,用 ascii85 编码。只会跳过缓冲区末尾的零。

registers

一组寄存器值。每个条目都在自己的行上,并用括号 { } 括起来。

offset

寄存器距离 GPU 内存区域起始的字节偏移量。

value

寄存器的十六进制值。

registers-hlsq

(仅限 5xx)来自 HLSQ 孔径的寄存器值。格式与寄存器节相同。