[Intel-xe] [PATCH 7/7] drm/xe/guc: Port workarounds to OOB infra
Lucas De Marchi
lucas.demarchi at intel.com
Thu May 4 07:32:50 UTC 2023
Let xe_guc.c start using XE_WA() for workarounds. One workaround
couldn't be converted due to no support for function hook checks.
Signed-off-by: Lucas De Marchi <lucas.demarchi at intel.com>
---
drivers/gpu/drm/xe/xe_guc.c | 40 +++++++++++++------------------------
1 file changed, 14 insertions(+), 26 deletions(-)
diff --git a/drivers/gpu/drm/xe/xe_guc.c b/drivers/gpu/drm/xe/xe_guc.c
index f7d32b744247..eea5ed015282 100644
--- a/drivers/gpu/drm/xe/xe_guc.c
+++ b/drivers/gpu/drm/xe/xe_guc.c
@@ -19,7 +19,9 @@
#include "xe_guc_submit.h"
#include "xe_mmio.h"
#include "xe_platform_types.h"
+#include "xe_rtp.h"
#include "xe_uc_fw.h"
+#include "xe_wa.h"
#include "xe_wopcm.h"
#define MEDIA_GUC_HOST_INTERRUPT XE_REG(0x190304)
@@ -136,29 +138,22 @@ static u32 guc_ctl_wa_flags(struct xe_guc *guc)
struct xe_gt *gt = guc_to_gt(guc);
u32 flags = 0;
- /* Wa_22012773006:gen11,gen12 < XeHP */
- if (GRAPHICS_VER(xe) >= 11 &&
- GRAPHICS_VERx100(xe) < 1250)
+ if (XE_WA(xe, "22012773006", GRAPHICS_VERSION_RANGE(1100, 1250)))
flags |= GUC_WA_POLLCS;
- /* Wa_16011759253 */
- /* Wa_22011383443 */
- if (IS_SUBPLATFORM_STEP(xe, XE_DG2, XE_SUBPLATFORM_DG2_G10, STEP_A0, STEP_B0))
+ if (XE_WA(xe, "16011759253, 22011383443",
+ SUBPLATFORM(DG2, G10), STEP(A0, B0)))
flags |= GUC_WA_GAM_CREDITS;
- /* Wa_14014475959 */
- if (IS_PLATFORM_STEP(xe, XE_METEORLAKE, STEP_A0, STEP_B0) ||
- xe->info.platform == XE_DG2)
+ if (XE_WA(xe, "14014475959[mtl]", PLATFORM(METEORLAKE), STEP(A0, B0)) ||
+ XE_WA(xe, "14014475959[dg2]", PLATFORM(DG2)))
flags |= GUC_WA_HOLD_CCS_SWITCHOUT;
/*
- * Wa_14012197797
- * Wa_22011391025
- *
* The same WA bit is used for both and 22011391025 is applicable to
* all DG2.
*/
- if (xe->info.platform == XE_DG2)
+ if (XE_WA(xe, "14012197797, 22011391025", PLATFORM(DG2)))
flags |= GUC_WA_DUAL_QUEUE;
/*
@@ -169,27 +164,20 @@ static u32 guc_ctl_wa_flags(struct xe_guc *guc)
if (GRAPHICS_VERx100(xe) < 1270)
flags |= GUC_WA_PRE_PARSER;
- /* Wa_16011777198 */
- if (IS_SUBPLATFORM_STEP(xe, XE_DG2, XE_SUBPLATFORM_DG2_G10, STEP_A0, STEP_C0) ||
- IS_SUBPLATFORM_STEP(xe, XE_DG2, XE_SUBPLATFORM_DG2_G11, STEP_A0,
- STEP_B0))
+ if (XE_WA(xe, "16011777198[dg2_g10]", SUBPLATFORM(DG2, G10), STEP(A0, C0)) ||
+ XE_WA(xe, "16011777198[dg2_g11]", SUBPLATFORM(DG2, G11), STEP(A0, B0)))
flags |= GUC_WA_RCS_RESET_BEFORE_RC6;
- /*
- * Wa_22012727170
- * Wa_22012727685
- */
- if (IS_SUBPLATFORM_STEP(xe, XE_DG2, XE_SUBPLATFORM_DG2_G10, STEP_A0, STEP_C0) ||
- IS_SUBPLATFORM_STEP(xe, XE_DG2, XE_SUBPLATFORM_DG2_G11, STEP_A0,
- STEP_FOREVER))
+ if (XE_WA(xe, "22012727170, 22012727685 [dg2_g10]", SUBPLATFORM(DG2, G10), STEP(A0, C0)) ||
+ XE_WA(xe, "22012727170, 22012727685 [dg2_g11]", SUBPLATFORM(DG2, G11), STEP(A0, FOREVER)))
flags |= GUC_WA_CONTEXT_ISOLATION;
/* Wa_16015675438, Wa_18020744125 */
+ /* FIXME: currently there is no support for gt checks in XE_WA() */
if (!xe_hw_engine_mask_per_class(gt, XE_ENGINE_CLASS_RENDER))
flags |= GUC_WA_RCS_REGS_IN_CCS_REGS_LIST;
- /* Wa_1509372804 */
- if (IS_PLATFORM_STEP(xe, XE_PVC, STEP_B0, STEP_C0))
+ if (XE_WA(xe, "1509372804", PLATFORM(PVC), STEP(B0, C0)))
flags |= GUC_WA_RENDER_RST_RC6_EXIT;
return flags;
--
2.40.1
More information about the Intel-xe
mailing list