Commit e4a0251d authored by John Harrison's avatar John Harrison Committed by Daniele Ceraolo Spurio
Browse files

drm/i915/guc: Extend w/a 14019159160



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: default avatarJohn Harrison <John.C.Harrison@Intel.com>
Reviewed-by: default avatarVinay Belgaumkar <vinay.belgaumkar@intel.com>
Signed-off-by: default avatarDaniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20240622004636.662081-3-John.C.Harrison@Intel.com
parent 104bcfae
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -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 */
+9 −9
Original line number Diff line number Diff line
@@ -815,8 +815,7 @@ guc_capture_prep_lists(struct intel_guc *guc)
	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)