|  | :orphan: | 
|  |  | 
|  | ===================== | 
|  | 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. | 
|  |  | 
|  | bo | 
|  | List of buffers from the hanging submission if available. | 
|  | Each buffer object will have a uinque iova. | 
|  |  | 
|  | iova | 
|  | GPU address of the buffer object. | 
|  |  | 
|  | size | 
|  | Allocated size of the buffer object. | 
|  |  | 
|  | data | 
|  | The contents of the buffer object encoded with ascii85.  Only | 
|  | Trailing zeros at the end of the buffer will be skipped. | 
|  |  | 
|  | 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. |