]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
drm/xe/dg1: Fix power gate sequence.
authorRodrigo Vivi <rodrigo.vivi@intel.com>
Thu, 19 Dec 2024 23:55:36 +0000 (18:55 -0500)
committerRodrigo Vivi <rodrigo.vivi@intel.com>
Fri, 20 Dec 2024 19:17:56 +0000 (14:17 -0500)
sub-pipe PG is not present on DG1. Setting these bits can disable
other power gates and cause GPU hangs on video playbacks.

VLK: 16314, 4304

Closes: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13381
Cc: Vinay Belgaumkar <vinay.belgaumkar@intel.com>
Cc: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
Reviewed-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20241219235536.454270-1-rodrigo.vivi@intel.com
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
drivers/gpu/drm/xe/xe_gt_idle.c

index fd80afeef56a7c942a725767d391ef713720300c..ffd3ba7f6656160eb02d0b3d98ffc639813ec606 100644 (file)
@@ -122,10 +122,12 @@ void xe_gt_idle_enable_pg(struct xe_gt *gt)
        if (!xe_gt_is_media_type(gt))
                gtidle->powergate_enable |= RENDER_POWERGATE_ENABLE;
 
-       for (i = XE_HW_ENGINE_VCS0, j = 0; i <= XE_HW_ENGINE_VCS7; ++i, ++j) {
-               if ((gt->info.engine_mask & BIT(i)))
-                       gtidle->powergate_enable |= (VDN_HCP_POWERGATE_ENABLE(j) |
-                                                    VDN_MFXVDENC_POWERGATE_ENABLE(j));
+       if (xe->info.platform != XE_DG1) {
+               for (i = XE_HW_ENGINE_VCS0, j = 0; i <= XE_HW_ENGINE_VCS7; ++i, ++j) {
+                       if ((gt->info.engine_mask & BIT(i)))
+                               gtidle->powergate_enable |= (VDN_HCP_POWERGATE_ENABLE(j) |
+                                                            VDN_MFXVDENC_POWERGATE_ENABLE(j));
+               }
        }
 
        fw_ref = xe_force_wake_get(gt_to_fw(gt), XE_FW_GT);