From 131328aa5699c35ad0db0a4da75b38fae2379d23 Mon Sep 17 00:00:00 2001 From: Tejas Upadhyay <tejas.upadhyay@intel.com> Date: Mon, 3 Jun 2024 16:19:50 +0530 Subject: [PATCH] drm/xe/xe2lpm: Add permanent Wa_14020756599 For xe2_lpm Wa_14020756599 is applied to all steppings and when RCS is present on graphics GT. V5(MattR): - Add more comments about new API V4: - Make it part of lrc wa - Check for RCS as rtp rule V3(MattR): - Rename rtp api name - Use MEDIA_VERx100 V2: - Remove engine filter video decode - Fix typo GRAPHICS/MEDIA/s - Himal Reviewed-by: Matt Roper <matthew.d.roper@intel.com> Signed-off-by: Tejas Upadhyay <tejas.upadhyay@intel.com> Signed-off-by: Matthew Brost <matthew.brost@intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20240603104951.705603-2-tejas.upadhyay@intel.com --- drivers/gpu/drm/xe/xe_rtp.c | 6 ++++++ drivers/gpu/drm/xe/xe_rtp.h | 14 ++++++++++++++ drivers/gpu/drm/xe/xe_wa.c | 7 +++++++ 3 files changed, 27 insertions(+) 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)) + }, + {} };