diff --git a/drivers/gpu/drm/xe/xe_rtp.c b/drivers/gpu/drm/xe/xe_rtp.c index fb44cc7521d8..01c32a932780 100644 --- a/drivers/gpu/drm/xe/xe_rtp.c +++ b/drivers/gpu/drm/xe/xe_rtp.c @@ -323,3 +323,9 @@ bool xe_rtp_match_first_gslice_fused_off(const struct xe_gt *gt, return dss >= dss_per_gslice; } + +bool xe_rtp_match_when_media2000(const struct xe_gt *gt, + const struct xe_hw_engine *hwe) +{ + return (gt_to_xe(gt))->info.media_verx100 == 2000; +} diff --git a/drivers/gpu/drm/xe/xe_rtp.h b/drivers/gpu/drm/xe/xe_rtp.h index 337b1ef1959c..a32645f5f80b 100644 --- a/drivers/gpu/drm/xe/xe_rtp.h +++ b/drivers/gpu/drm/xe/xe_rtp.h @@ -427,4 +427,18 @@ bool xe_rtp_match_first_render_or_compute(const struct xe_gt *gt, bool xe_rtp_match_first_gslice_fused_off(const struct xe_gt *gt, const struct xe_hw_engine *hwe); +/* + * xe_rtp_match_when_media2000 - Match when media GT version 2000 + * + * @gt: GT structure + * @hwe: Engine instance + * + * Its one of the case where we need to apply workaround on primary GT + * based on if media GT version 2000 is present. Thus this API will help + * us to match media version 2000. + * + * Returns: true if media GT version 2000, false otherwise. + */ +bool xe_rtp_match_when_media2000(const struct xe_gt *gt, + const struct xe_hw_engine *hwe); #endif diff --git a/drivers/gpu/drm/xe/xe_wa.c b/drivers/gpu/drm/xe/xe_wa.c index 64bc595fc727..321ea100a491 100644 --- a/drivers/gpu/drm/xe/xe_wa.c +++ b/drivers/gpu/drm/xe/xe_wa.c @@ -701,6 +701,13 @@ static const struct xe_rtp_entry_sr lrc_was[] = { DIS_AUTOSTRIP)) }, + /* Xe2_LPM */ + + { XE_RTP_NAME("14020756599"), + XE_RTP_RULES(ENGINE_CLASS(RENDER), FUNC(xe_rtp_match_when_media2000)), + XE_RTP_ACTIONS(SET(WM_CHICKEN3, HIZ_PLANE_COMPRESSION_DIS)) + }, + {} };