Lines Matching full:coredump

31  * DOC: Xe device coredump
38 * coredump.
41 * coredump:
49 * **Coredump release**:
50 * After a coredump is generated, it stays in kernel memory until released by
53 * a coredump:
73 static struct xe_device *coredump_to_xe(const struct xe_devcoredump *coredump) in coredump_to_xe() argument
75 return container_of(coredump, struct xe_device, devcoredump); in coredump_to_xe()
84 struct xe_devcoredump *coredump) in __xe_devcoredump_read() argument
93 xe = coredump_to_xe(coredump); in __xe_devcoredump_read()
94 ss = &coredump->snapshot; in __xe_devcoredump_read()
102 drm_puts(&p, "**** Xe Device Coredump ****\n"); in __xe_devcoredump_read()
174 struct xe_devcoredump *coredump = data; in xe_devcoredump_read() local
178 if (!coredump) in xe_devcoredump_read()
181 ss = &coredump->snapshot; in xe_devcoredump_read()
186 mutex_lock(&coredump->lock); in xe_devcoredump_read()
189 mutex_unlock(&coredump->lock); in xe_devcoredump_read()
194 mutex_unlock(&coredump->lock); in xe_devcoredump_read()
202 mutex_unlock(&coredump->lock); in xe_devcoredump_read()
209 struct xe_devcoredump *coredump = data; in xe_devcoredump_free() local
212 if (!data || !coredump_to_xe(coredump)) in xe_devcoredump_free()
215 cancel_work_sync(&coredump->snapshot.work); in xe_devcoredump_free()
217 mutex_lock(&coredump->lock); in xe_devcoredump_free()
219 xe_devcoredump_snapshot_free(&coredump->snapshot); in xe_devcoredump_free()
220 kvfree(coredump->snapshot.read.buffer); in xe_devcoredump_free()
223 memset(&coredump->snapshot, 0, sizeof(coredump->snapshot)); in xe_devcoredump_free()
224 coredump->captured = false; in xe_devcoredump_free()
225 drm_info(&coredump_to_xe(coredump)->drm, in xe_devcoredump_free()
226 "Xe device coredump has been deleted.\n"); in xe_devcoredump_free()
228 mutex_unlock(&coredump->lock); in xe_devcoredump_free()
234 struct xe_devcoredump *coredump = container_of(ss, typeof(*coredump), snapshot); in xe_devcoredump_deferred_snap_work() local
235 struct xe_device *xe = coredump_to_xe(coredump); 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()
252 xe_gt_info(ss->gt, "failed to get forcewake for coredump capture\n"); in xe_devcoredump_deferred_snap_work()
260 ss->read.size = __xe_devcoredump_read(NULL, INT_MAX, coredump); in xe_devcoredump_deferred_snap_work()
266 __xe_devcoredump_read(ss->read.buffer, ss->read.size, coredump); in xe_devcoredump_deferred_snap_work()
270 static void devcoredump_snapshot(struct xe_devcoredump *coredump, in devcoredump_snapshot() argument
274 struct xe_devcoredump_snapshot *ss = &coredump->snapshot; in devcoredump_snapshot()
326 * xe_devcoredump - Take the required snapshots and initialize coredump device.
339 struct xe_devcoredump *coredump = &xe->devcoredump; in xe_devcoredump() local
342 mutex_lock(&coredump->lock); in xe_devcoredump()
344 if (coredump->captured) { in xe_devcoredump()
346 mutex_unlock(&coredump->lock); in xe_devcoredump()
350 coredump->captured = true; in xe_devcoredump()
353 coredump->snapshot.reason = kvasprintf(GFP_ATOMIC, fmt, varg); in xe_devcoredump()
356 devcoredump_snapshot(coredump, q, job); in xe_devcoredump()
358 drm_info(&xe->drm, "Xe device coredump has been created\n"); in xe_devcoredump()
362 mutex_unlock(&coredump->lock); in xe_devcoredump()