mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-27 13:35:09 +07:00
50f8d21863
HLSQ, SP and TP registers are only accessible from a special aperture and to make matters worse the aperture is blocked from the CPU on targets that can support secure rendering. Luckily the GPU hardware has its own purpose built register dumper that can access the registers from the aperture. Add a5xx specific code to program the crashdumper and retrieve the wayward registers and dump them for the crash state. Also, remove a block of registers the regular CPU accessible list that aren't useful for debug which helps reduce the size of the crash state file by a goodly amount. Signed-off-by: Jordan Crouse <jcrouse@codeaurora.org> Signed-off-by: Rob Clark <robdclark@gmail.com>
83 lines
2.0 KiB
ReStructuredText
83 lines
2.0 KiB
ReStructuredText
=====================
|
|
MSM Crash Dump Format
|
|
=====================
|
|
|
|
Following a GPU hang the MSM driver outputs debugging information via
|
|
/sys/kernel/dri/X/show or via devcoredump (/sys/class/devcoredump/dcdX/data).
|
|
This document describes how the output is formatted.
|
|
|
|
Each entry is in the form key: value. Sections headers will not have a value
|
|
and all the contents of a section will be indented two spaces from the header.
|
|
Each section might have multiple array entries the start of which is designated
|
|
by a (-).
|
|
|
|
Mappings
|
|
--------
|
|
|
|
kernel
|
|
The kernel version that generated the dump (UTS_RELEASE).
|
|
|
|
module
|
|
The module that generated the crashdump.
|
|
|
|
time
|
|
The kernel time at crash formated as seconds.microseconds.
|
|
|
|
comm
|
|
Comm string for the binary that generated the fault.
|
|
|
|
cmdline
|
|
Command line for the binary that generated the fault.
|
|
|
|
revision
|
|
ID of the GPU that generated the crash formatted as
|
|
core.major.minor.patchlevel separated by dots.
|
|
|
|
rbbm-status
|
|
The current value of RBBM_STATUS which shows what top level GPU
|
|
components are in use at the time of crash.
|
|
|
|
ringbuffer
|
|
Section containing the contents of each ringbuffer. Each ringbuffer is
|
|
identified with an id number.
|
|
|
|
id
|
|
Ringbuffer ID (0 based index). Each ringbuffer in the section
|
|
will have its own unique id.
|
|
iova
|
|
GPU address of the ringbuffer.
|
|
|
|
last-fence
|
|
The last fence that was issued on the ringbuffer
|
|
|
|
retired-fence
|
|
The last fence retired on the ringbuffer.
|
|
|
|
rptr
|
|
The current read pointer (rptr) for the ringbuffer.
|
|
|
|
wptr
|
|
The current write pointer (wptr) for the ringbuffer.
|
|
|
|
size
|
|
Maximum size of the ringbuffer programmed in the hardware.
|
|
|
|
data
|
|
The contents of the ring encoded as ascii85. Only the used
|
|
portions of the ring will be printed.
|
|
|
|
registers
|
|
Set of registers values. Each entry is on its own line enclosed
|
|
by brackets { }.
|
|
|
|
offset
|
|
Byte offset of the register from the start of the
|
|
GPU memory region.
|
|
|
|
value
|
|
Hexadecimal value of the register.
|
|
|
|
registers-hlsq
|
|
(5xx only) Register values from the HLSQ aperture.
|
|
Same format as the register section.
|