diff options
author | Adrián Larumbe <adrian.larumbe@collabora.com> | 2022-07-29 15:46:10 +0100 |
---|---|---|
committer | Steven Price <steven.price@arm.com> | 2022-08-08 12:39:55 +0100 |
commit | 730c2bf4ad395acf0aa0820535fdb8ea6abe5df1 (patch) | |
tree | c21c905d62e8d187250263be9e710152bf4dd74a /include/uapi/drm | |
parent | 6a3aaa2bc03ea7ecb93741d2f55aa9064e95d528 (diff) | |
download | linux-stable-730c2bf4ad395acf0aa0820535fdb8ea6abe5df1.tar.gz linux-stable-730c2bf4ad395acf0aa0820535fdb8ea6abe5df1.tar.bz2 linux-stable-730c2bf4ad395acf0aa0820535fdb8ea6abe5df1.zip |
drm/panfrost: Add support for devcoredump
In the event of a job timeout, debug dump information will be written into
/sys/class/devcoredump.
Inspired by etnaviv's similar feature.
Signed-off-by: Adrián Larumbe <adrian.larumbe@collabora.com>
Reviewed-by: Steven Price <steven.price@arm.com>
Signed-off-by: Steven Price <steven.price@arm.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20220729144610.2105223-3-adrian.larumbe@collabora.com
Diffstat (limited to 'include/uapi/drm')
-rw-r--r-- | include/uapi/drm/panfrost_drm.h | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/include/uapi/drm/panfrost_drm.h b/include/uapi/drm/panfrost_drm.h index 9e40277d8185..eac87310b348 100644 --- a/include/uapi/drm/panfrost_drm.h +++ b/include/uapi/drm/panfrost_drm.h @@ -224,6 +224,53 @@ struct drm_panfrost_madvise { __u32 retained; /* out, whether backing store still exists */ }; +/* Definitions for coredump decoding in user space */ +#define PANFROSTDUMP_MAJOR 1 +#define PANFROSTDUMP_MINOR 0 + +#define PANFROSTDUMP_MAGIC 0x464E4150 /* PANF */ + +#define PANFROSTDUMP_BUF_REG 0 +#define PANFROSTDUMP_BUF_BOMAP (PANFROSTDUMP_BUF_REG + 1) +#define PANFROSTDUMP_BUF_BO (PANFROSTDUMP_BUF_BOMAP + 1) +#define PANFROSTDUMP_BUF_TRAILER (PANFROSTDUMP_BUF_BO + 1) + +struct panfrost_dump_object_header { + __le32 magic; + __le32 type; + __le32 file_size; + __le32 file_offset; + + union { + struct pan_reg_hdr { + __le64 jc; + __le32 gpu_id; + __le32 major; + __le32 minor; + __le64 nbos; + } reghdr; + + struct pan_bomap_hdr { + __le32 valid; + __le64 iova; + __le32 data[2]; + } bomap; + + /* + * Force same size in case we want to expand the header + * with new fields and also keep it 512-byte aligned + */ + + __le32 sizer[496]; + }; +}; + +/* Registers object, an array of these */ +struct panfrost_dump_registers { + __le32 reg; + __le32 value; +}; + #if defined(__cplusplus) } #endif |