Lines Matching full:ss
87 struct xe_devcoredump_snapshot *ss; in __xe_devcoredump_read() local
94 ss = &coredump->snapshot; in __xe_devcoredump_read()
103 drm_printf(&p, "Reason: %s\n", ss->reason); in __xe_devcoredump_read()
107 ts = ktime_to_timespec64(ss->snapshot_time); in __xe_devcoredump_read()
109 ts = ktime_to_timespec64(ss->boot_time); in __xe_devcoredump_read()
111 drm_printf(&p, "Process: %s [%d]\n", ss->process_name, ss->pid); in __xe_devcoredump_read()
114 drm_printf(&p, "\n**** GT #%d ****\n", ss->gt->info.id); in __xe_devcoredump_read()
115 drm_printf(&p, "\tTile: %d\n", ss->gt->tile->id); in __xe_devcoredump_read()
118 xe_guc_log_snapshot_print(ss->guc.log, &p); in __xe_devcoredump_read()
120 xe_guc_ct_snapshot_print(ss->guc.ct, &p); in __xe_devcoredump_read()
123 xe_guc_exec_queue_snapshot_print(ss->ge, &p); in __xe_devcoredump_read()
126 xe_sched_job_snapshot_print(ss->job, &p); in __xe_devcoredump_read()
130 if (ss->hwe[i]) in __xe_devcoredump_read()
131 xe_engine_snapshot_print(ss->hwe[i], &p); in __xe_devcoredump_read()
134 xe_vm_snapshot_print(ss->vm, &p); in __xe_devcoredump_read()
139 static void xe_devcoredump_snapshot_free(struct xe_devcoredump_snapshot *ss) in xe_devcoredump_snapshot_free() argument
143 kfree(ss->reason); in xe_devcoredump_snapshot_free()
144 ss->reason = NULL; in xe_devcoredump_snapshot_free()
146 xe_guc_log_snapshot_free(ss->guc.log); in xe_devcoredump_snapshot_free()
147 ss->guc.log = NULL; in xe_devcoredump_snapshot_free()
149 xe_guc_ct_snapshot_free(ss->guc.ct); in xe_devcoredump_snapshot_free()
150 ss->guc.ct = NULL; in xe_devcoredump_snapshot_free()
152 xe_guc_capture_put_matched_nodes(&ss->gt->uc.guc); in xe_devcoredump_snapshot_free()
153 ss->matched_node = NULL; in xe_devcoredump_snapshot_free()
155 xe_guc_exec_queue_snapshot_free(ss->ge); in xe_devcoredump_snapshot_free()
156 ss->ge = NULL; in xe_devcoredump_snapshot_free()
158 xe_sched_job_snapshot_free(ss->job); in xe_devcoredump_snapshot_free()
159 ss->job = NULL; in xe_devcoredump_snapshot_free()
162 if (ss->hwe[i]) { in xe_devcoredump_snapshot_free()
163 xe_hw_engine_snapshot_free(ss->hwe[i]); in xe_devcoredump_snapshot_free()
164 ss->hwe[i] = NULL; in xe_devcoredump_snapshot_free()
167 xe_vm_snapshot_free(ss->vm); in xe_devcoredump_snapshot_free()
168 ss->vm = NULL; in xe_devcoredump_snapshot_free()
175 struct xe_devcoredump_snapshot *ss; in xe_devcoredump_read() local
181 ss = &coredump->snapshot; in xe_devcoredump_read()
184 flush_work(&ss->work); in xe_devcoredump_read()
188 if (!ss->read.buffer) { in xe_devcoredump_read()
193 if (offset >= ss->read.size) { in xe_devcoredump_read()
198 byte_copied = count < ss->read.size - offset ? count : in xe_devcoredump_read()
199 ss->read.size - offset; in xe_devcoredump_read()
200 memcpy(buffer, ss->read.buffer + offset, byte_copied); in xe_devcoredump_read()
233 struct xe_devcoredump_snapshot *ss = container_of(work, typeof(*ss), work); in xe_devcoredump_deferred_snap_work() local
234 struct xe_devcoredump *coredump = container_of(ss, typeof(*coredump), snapshot); in xe_devcoredump_deferred_snap_work()
243 dev_coredumpm_timeout(gt_to_xe(ss->gt)->drm.dev, THIS_MODULE, coredump, 0, GFP_KERNEL, in xe_devcoredump_deferred_snap_work()
250 fw_ref = xe_force_wake_get(gt_to_fw(ss->gt), XE_FORCEWAKE_ALL); in xe_devcoredump_deferred_snap_work()
252 xe_gt_info(ss->gt, "failed to get forcewake for coredump capture\n"); in xe_devcoredump_deferred_snap_work()
253 xe_vm_snapshot_capture_delayed(ss->vm); in xe_devcoredump_deferred_snap_work()
254 xe_guc_exec_queue_snapshot_capture_delayed(ss->ge); in xe_devcoredump_deferred_snap_work()
255 xe_force_wake_put(gt_to_fw(ss->gt), fw_ref); in xe_devcoredump_deferred_snap_work()
260 ss->read.size = __xe_devcoredump_read(NULL, INT_MAX, coredump); in xe_devcoredump_deferred_snap_work()
262 ss->read.buffer = kvmalloc(ss->read.size, GFP_USER); in xe_devcoredump_deferred_snap_work()
263 if (!ss->read.buffer) in xe_devcoredump_deferred_snap_work()
266 __xe_devcoredump_read(ss->read.buffer, ss->read.size, coredump); in xe_devcoredump_deferred_snap_work()
267 xe_devcoredump_snapshot_free(ss); in xe_devcoredump_deferred_snap_work()
274 struct xe_devcoredump_snapshot *ss = &coredump->snapshot; in devcoredump_snapshot() local
284 ss->snapshot_time = ktime_get_real(); in devcoredump_snapshot()
285 ss->boot_time = ktime_get_boottime(); in devcoredump_snapshot()
289 ss->pid = q->vm->xef->pid; in devcoredump_snapshot()
292 strscpy(ss->process_name, process_name); in devcoredump_snapshot()
294 ss->gt = q->gt; in devcoredump_snapshot()
295 INIT_WORK(&ss->work, xe_devcoredump_deferred_snap_work); in devcoredump_snapshot()
310 ss->guc.log = xe_guc_log_snapshot_capture(&guc->log, true); in devcoredump_snapshot()
311 ss->guc.ct = xe_guc_ct_snapshot_capture(&guc->ct); in devcoredump_snapshot()
312 ss->ge = xe_guc_exec_queue_snapshot_capture(q); in devcoredump_snapshot()
314 ss->job = xe_sched_job_snapshot_capture(job); in devcoredump_snapshot()
315 ss->vm = xe_vm_snapshot_capture(q->vm); in devcoredump_snapshot()
319 queue_work(system_unbound_wq, &ss->work); in devcoredump_snapshot()