]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
drm/i915/guc: Extend w/a 14019159160
authorJohn Harrison <John.C.Harrison@Intel.com>
Sat, 22 Jun 2024 00:46:36 +0000 (17:46 -0700)
committerDaniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
Thu, 18 Jul 2024 19:51:56 +0000 (12:51 -0700)
There is a new part to an existing workaround, so enable that piece as
well.

v2: Extend even further.
v3: Drop DG2 as there are CI failures still to resolve. Also re-order
the parameters to a function to reduce excessive line wrapping.

Signed-off-by: John Harrison <John.C.Harrison@Intel.com>
Reviewed-by: Vinay Belgaumkar <vinay.belgaumkar@intel.com>
Signed-off-by: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20240622004636.662081-3-John.C.Harrison@Intel.com
drivers/gpu/drm/i915/gt/uc/abi/guc_klvs_abi.h
drivers/gpu/drm/i915/gt/uc/intel_guc_ads.c

index 37ff539a6963d79badb0970ac73628f3e0545268..0c709e6c15be7ae7c7a83663a666aedcb6d9faa7 100644 (file)
@@ -107,6 +107,7 @@ enum {
 enum {
        GUC_WORKAROUND_KLV_SERIALIZED_RA_MODE                           = 0x9001,
        GUC_WORKAROUND_KLV_BLOCK_INTERRUPTS_WHEN_MGSR_BLOCKED           = 0x9002,
+       GUC_WORKAROUND_KLV_AVOID_GFX_CLEAR_WHILE_ACTIVE                 = 0x9006,
 };
 
 #endif /* _ABI_GUC_KLVS_ABI_H */
index f1fe5f90545388ecc4f11086c16e7d5b6886048a..46fabbfc775e07e17e46a308bc4ead59a8452a61 100644 (file)
@@ -815,8 +815,7 @@ engine_instance_list:
        return PAGE_ALIGN(total_size);
 }
 
-static void guc_waklv_enable_simple(struct intel_guc *guc,
-                                   u32 klv_id, u32 *offset, u32 *remain)
+static void guc_waklv_enable_simple(struct intel_guc *guc, u32 *offset, u32 *remain, u32 klv_id)
 {
        u32 size;
        u32 klv_entry[] = {
@@ -850,19 +849,20 @@ static void guc_waklv_init(struct intel_guc *guc)
        remain = guc_ads_waklv_size(guc);
 
        /* Wa_14019159160 */
-       if (IS_GFX_GT_IP_RANGE(gt, IP_VER(12, 70), IP_VER(12, 74)))
-               guc_waklv_enable_simple(guc,
-                                       GUC_WORKAROUND_KLV_SERIALIZED_RA_MODE,
-                                       &offset, &remain);
+       if (IS_GFX_GT_IP_RANGE(gt, IP_VER(12, 70), IP_VER(12, 74))) {
+               guc_waklv_enable_simple(guc, &offset, &remain,
+                                       GUC_WORKAROUND_KLV_SERIALIZED_RA_MODE);
+               guc_waklv_enable_simple(guc, &offset, &remain,
+                                       GUC_WORKAROUND_KLV_AVOID_GFX_CLEAR_WHILE_ACTIVE);
+       }
 
        /* Wa_16021333562 */
        if ((GUC_FIRMWARE_VER(guc) >= MAKE_GUC_VER(70, 21, 1)) &&
            (IS_GFX_GT_IP_RANGE(gt, IP_VER(12, 70), IP_VER(12, 74)) ||
             IS_MEDIA_GT_IP_RANGE(gt, IP_VER(13, 0), IP_VER(13, 0)) ||
             IS_DG2(gt->i915)))
-               guc_waklv_enable_simple(guc,
-                                       GUC_WORKAROUND_KLV_BLOCK_INTERRUPTS_WHEN_MGSR_BLOCKED,
-                                       &offset, &remain);
+               guc_waklv_enable_simple(guc, &offset, &remain,
+                                       GUC_WORKAROUND_KLV_BLOCK_INTERRUPTS_WHEN_MGSR_BLOCKED);
 
        size = guc_ads_waklv_size(guc) - remain;
        if (!size)