drm/xe: Grab mem_access when disabling C6 on skip_guc_pc platforms
authorMatt Roper <matthew.d.roper@intel.com>
Fri, 26 Jan 2024 22:06:14 +0000 (14:06 -0800)
committerThomas Hellström <thomas.hellstrom@linux.intel.com>
Thu, 1 Feb 2024 10:26:06 +0000 (11:26 +0100)
If skip_guc_pc is set for a platform, C6 is disabled directly without
acquiring a mem_access reference, triggering an assertion inside
xe_gt_idle_disable_c6.

Fixes: 975e4a3795d4 ("drm/xe: Manually setup C6 when skip_guc_pc is set")
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
Cc: Vinay Belgaumkar <vinay.belgaumkar@intel.com>
Signed-off-by: Matt Roper <matthew.d.roper@intel.com>
Reviewed-by: Matthew Auld <matthew.auld@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20240126220613.865939-2-matthew.d.roper@intel.com
(cherry picked from commit 9f5971bdf78e0937206556534247243ad56cd735)
Signed-off-by: Thomas Hellström <thomas.hellstrom@linux.intel.com>
drivers/gpu/drm/xe/xe_guc_pc.c

index f710852..d917025 100644 (file)
@@ -963,7 +963,9 @@ void xe_guc_pc_fini(struct xe_guc_pc *pc)
        struct xe_device *xe = pc_to_xe(pc);
 
        if (xe->info.skip_guc_pc) {
+               xe_device_mem_access_get(xe);
                xe_gt_idle_disable_c6(pc_to_gt(pc));
+               xe_device_mem_access_put(xe);
                return;
        }