Skip to content

Commit

Permalink
drm/xe: Add process name to devcoredump
Browse files Browse the repository at this point in the history
Process name help us track what application caused the gpug hang, this
is crucial when running several applications at the same time.

v2:
- handle Xe KMD exec_queues without VM

v3:
- use get_pid_task() (suggested by Nirmoy)

Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
Cc: Nirmoy Das <nirmoy.das@intel.com>
Signed-off-by: José Roberto de Souza <jose.souza@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20240522201203.145403-1-jose.souza@intel.com
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
  • Loading branch information
José Roberto de Souza authored and Rodrigo Vivi committed May 23, 2024
1 parent e8ac804 commit b10d0c5
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 0 deletions.
13 changes: 13 additions & 0 deletions drivers/gpu/drm/xe/xe_devcoredump.c
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,7 @@ static ssize_t xe_devcoredump_read(char *buffer, loff_t offset,
drm_printf(&p, "Snapshot time: %lld.%09ld\n", ts.tv_sec, ts.tv_nsec);
ts = ktime_to_timespec64(ss->boot_time);
drm_printf(&p, "Uptime: %lld.%09ld\n", ts.tv_sec, ts.tv_nsec);
drm_printf(&p, "Process: %s\n", ss->process_name);
xe_device_snapshot_print(xe, &p);

drm_printf(&p, "\n**** GuC CT ****\n");
Expand Down Expand Up @@ -166,12 +167,24 @@ static void devcoredump_snapshot(struct xe_devcoredump *coredump,
enum xe_hw_engine_id id;
u32 adj_logical_mask = q->logical_mask;
u32 width_mask = (0x1 << q->width) - 1;
const char *process_name = "no process";
struct task_struct *task = NULL;

int i;
bool cookie;

ss->snapshot_time = ktime_get_real();
ss->boot_time = ktime_get_boottime();

if (q->vm) {
task = get_pid_task(q->vm->xef->drm->pid, PIDTYPE_PID);
if (task)
process_name = task->comm;
}
snprintf(ss->process_name, sizeof(ss->process_name), process_name);
if (task)
put_task_struct(task);

ss->gt = q->gt;
INIT_WORK(&ss->work, xe_devcoredump_deferred_snap_work);

Expand Down
2 changes: 2 additions & 0 deletions drivers/gpu/drm/xe/xe_devcoredump_types.h
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,8 @@ struct xe_devcoredump_snapshot {
ktime_t snapshot_time;
/** @boot_time: Relative boot time so the uptime can be calculated. */
ktime_t boot_time;
/** @process_name: Name of process that triggered this gpu hang */
char process_name[TASK_COMM_LEN];

/** @gt: Affected GT, used by forcewake for delayed capture */
struct xe_gt *gt;
Expand Down

0 comments on commit b10d0c5

Please sign in to comment.