Skip to content

Commit aef0b4a

Browse files
mbrost05Thomas Hellström
authored andcommitted
drm/xe: Take PM ref in delayed snapshot capture worker
The delayed snapshot capture worker can access the GPU or VRAM both of which require a PM reference. Take a reference in this worker. Cc: Rodrigo Vivi <rodrigo.vivi@intel.com> Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> Fixes: 4f04d07 ("drm/xe: Faster devcoredump") Signed-off-by: Matthew Brost <matthew.brost@intel.com> Reviewed-by: Matthew Auld <matthew.auld@intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20241126174615.2665852-5-matthew.brost@intel.com (cherry picked from commit 1c6878a) Signed-off-by: Thomas Hellström <thomas.hellstrom@linux.intel.com>
1 parent c78f439 commit aef0b4a

File tree

1 file changed

+6
-0
lines changed

1 file changed

+6
-0
lines changed

drivers/gpu/drm/xe/xe_devcoredump.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
#include "xe_guc_submit.h"
2424
#include "xe_hw_engine.h"
2525
#include "xe_module.h"
26+
#include "xe_pm.h"
2627
#include "xe_sched_job.h"
2728
#include "xe_vm.h"
2829

@@ -158,8 +159,11 @@ static void xe_devcoredump_deferred_snap_work(struct work_struct *work)
158159
{
159160
struct xe_devcoredump_snapshot *ss = container_of(work, typeof(*ss), work);
160161
struct xe_devcoredump *coredump = container_of(ss, typeof(*coredump), snapshot);
162+
struct xe_device *xe = coredump_to_xe(coredump);
161163
unsigned int fw_ref;
162164

165+
xe_pm_runtime_get(xe);
166+
163167
/* keep going if fw fails as we still want to save the memory and SW data */
164168
fw_ref = xe_force_wake_get(gt_to_fw(ss->gt), XE_FORCEWAKE_ALL);
165169
if (!xe_force_wake_ref_has_domain(fw_ref, XE_FORCEWAKE_ALL))
@@ -168,6 +172,8 @@ static void xe_devcoredump_deferred_snap_work(struct work_struct *work)
168172
xe_guc_exec_queue_snapshot_capture_delayed(ss->ge);
169173
xe_force_wake_put(gt_to_fw(ss->gt), fw_ref);
170174

175+
xe_pm_runtime_put(xe);
176+
171177
/* Calculate devcoredump size */
172178
ss->read.size = __xe_devcoredump_read(NULL, INT_MAX, coredump);
173179

0 commit comments

Comments
 (0)