Lines Matching defs:coredump
31 * DOC: Xe device coredump
38 * coredump.
41 * coredump:
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)
75 return container_of(coredump, struct xe_device, devcoredump);
85 struct xe_devcoredump *coredump)
94 xe = coredump_to_xe(coredump);
95 ss = &coredump->snapshot;
175 * xe_devcoredump_read() - Read data from the Xe device coredump snapshot
176 * @buffer: Destination buffer to copy the coredump data into
177 * @offset: Offset in the coredump data to start reading from
182 * Reads a chunk of the coredump snapshot data into the provided buffer.
193 struct xe_devcoredump *coredump = data;
201 if (!coredump)
204 ss = &coredump->snapshot;
213 mutex_lock(&coredump->lock);
234 ss->read.chunk_position, coredump);
242 mutex_unlock(&coredump->lock);
252 struct xe_devcoredump *coredump = data;
255 if (!data || !coredump_to_xe(coredump))
258 cancel_work_sync(&coredump->snapshot.work);
260 mutex_lock(&coredump->lock);
262 xe_devcoredump_snapshot_free(&coredump->snapshot);
263 kvfree(coredump->snapshot.read.buffer);
266 memset(&coredump->snapshot, 0, sizeof(coredump->snapshot));
267 coredump->captured = false;
268 drm_info(&coredump_to_xe(coredump)->drm,
269 "Xe device coredump has been deleted.\n");
271 mutex_unlock(&coredump->lock);
277 struct xe_devcoredump *coredump = container_of(ss, typeof(*coredump), snapshot);
278 struct xe_device *xe = coredump_to_xe(coredump);
286 dev_coredumpm_timeout(gt_to_xe(ss->gt)->drm.dev, THIS_MODULE, coredump, 0, GFP_KERNEL,
295 xe_gt_info(ss->gt, "failed to get forcewake for coredump capture\n");
303 ss->read.size = __xe_devcoredump_read(NULL, LONG_MAX, 0, coredump);
313 0, coredump);
320 coredump);
328 static void devcoredump_snapshot(struct xe_devcoredump *coredump,
332 struct xe_devcoredump_snapshot *ss = &coredump->snapshot;
372 * xe_devcoredump - Take the required snapshots and initialize coredump device.
385 struct xe_devcoredump *coredump = &xe->devcoredump;
388 mutex_lock(&coredump->lock);
390 if (coredump->captured) {
392 mutex_unlock(&coredump->lock);
396 coredump->captured = true;
399 coredump->snapshot.reason = kvasprintf(GFP_ATOMIC, fmt, varg);
402 devcoredump_snapshot(coredump, q, job);
404 drm_info(&xe->drm, "Xe device coredump has been created\n");
408 mutex_unlock(&coredump->lock);