[PATCH] drm/xe/guc: Enable WA 14018913170

Lucas De Marchi lucas.demarchi at intel.com
Wed Jan 24 04:41:55 UTC 2024


On Wed, Jan 17, 2024 at 11:20:35AM +0530, Karthik Poosa wrote:
>The GuC handles the WA, the KMD just needs to set the flag to enable
>it on the appropriate platforms.
>
>v2:
>  - Fixed CI checkpatch warning, alignment should match open parenthesis.
>  - Fixed GUC FW version check to use XE_UC_FW_VER_RELEASE which points to
>    current GUC FW version instead of XE_UC_FW_VER_COMPATIBILITY which
>    holds GUC FW I/F version (Badal).
>v3:
>  - Removed extra character in debug print.
>
>Signed-off-by: Karthik Poosa <karthik.poosa at intel.com>
>---
> drivers/gpu/drm/xe/xe_guc.c        | 13 +++++++++++++
> drivers/gpu/drm/xe/xe_guc_fwif.h   |  1 +
> drivers/gpu/drm/xe/xe_wa_oob.rules |  5 +++++
> 3 files changed, 19 insertions(+)
>
>diff --git a/drivers/gpu/drm/xe/xe_guc.c b/drivers/gpu/drm/xe/xe_guc.c
>index 235d27b17ff9..2891b0cc4f7f 100644
>--- a/drivers/gpu/drm/xe/xe_guc.c
>+++ b/drivers/gpu/drm/xe/xe_guc.c
>@@ -132,10 +132,15 @@ static u32 guc_ctl_ads_flags(struct xe_guc *guc)
> 	return flags;
> }
>
>+#define GUC_VER(maj, min, pat)	(((maj) << 16) | ((min) << 8) | (pat))
>+
> static u32 guc_ctl_wa_flags(struct xe_guc *guc)
> {
> 	struct xe_device *xe = guc_to_xe(guc);
> 	struct xe_gt *gt = guc_to_gt(guc);
>+	struct xe_uc_fw *uc_fw = &guc->fw;
>+	struct xe_uc_fw_version *version = &uc_fw->versions.found[XE_UC_FW_VER_RELEASE];
>+
> 	u32 flags = 0;
>
> 	if (XE_WA(gt, 22012773006))
>@@ -165,6 +170,14 @@ static u32 guc_ctl_wa_flags(struct xe_guc *guc)
> 	if (XE_WA(gt, 1509372804))
> 		flags |= GUC_WA_RENDER_RST_RC6_EXIT;
>
>+	if (XE_WA(gt, 14018913170)) {
>+		if (GUC_VER(version->major, version->minor, version->patch) >= GUC_VER(70, 7, 0))
>+			flags |= GUC_WA_ENABLE_TSC_CHECK_ON_RC6;
>+		else
>+			drm_warn(&xe->drm, "can't apply WA 14018913170, GUC version expected >= 70.7.0, found %u %u %u\n",
>+				 version->major, version->minor, version->patch);

this warning can't be here for 2 reasons:

1) We still publish that the expected version is 70.5.1. This now warns
    for everybody. The minor version will eventually change, see
    https://lore.kernel.org/intel-xe/20240122213708.1841488-1-John.C.Harrison@Intel.com/,
    but the message here shouldn't be added ahead of that patch merging.

2) The mechanism to inform about newer fw versions is not by sprinkling
    warnings in the driver. The fw loader part in xe will already do it in
    the proper way that follows
    https://docs.kernel.org/driver-api/firmware/firmware-usage-guidelines.html

For the meantime, please reduce this to a debug message, not a warning.


Lucas De Marchi


>+	}
>+
> 	return flags;
> }
>
>diff --git a/drivers/gpu/drm/xe/xe_guc_fwif.h b/drivers/gpu/drm/xe/xe_guc_fwif.h
>index 4dd5a88a7826..c281fdbfd2d6 100644
>--- a/drivers/gpu/drm/xe/xe_guc_fwif.h
>+++ b/drivers/gpu/drm/xe/xe_guc_fwif.h
>@@ -97,6 +97,7 @@ struct guc_update_exec_queue_policy {
> #define   GUC_WA_POLLCS			BIT(18)
> #define   GUC_WA_RENDER_RST_RC6_EXIT	BIT(19)
> #define   GUC_WA_RCS_REGS_IN_CCS_REGS_LIST	BIT(21)
>+#define   GUC_WA_ENABLE_TSC_CHECK_ON_RC6	BIT(22)
>
> #define GUC_CTL_FEATURE			2
> #define   GUC_CTL_ENABLE_SLPC		BIT(2)
>diff --git a/drivers/gpu/drm/xe/xe_wa_oob.rules b/drivers/gpu/drm/xe/xe_wa_oob.rules
>index e73b84e01ea1..b138cbd51bdb 100644
>--- a/drivers/gpu/drm/xe/xe_wa_oob.rules
>+++ b/drivers/gpu/drm/xe/xe_wa_oob.rules
>@@ -17,3 +17,8 @@
> 14019821291	MEDIA_VERSION_RANGE(1300, 2000)
> 14015076503	MEDIA_VERSION(1300)
> 16020292621	GRAPHICS_VERSION(2004), GRAPHICS_STEP(A0, B0)
>+14018913170	GRAPHICS_VERSION(2004), GRAPHICS_STEP(A0, B0)
>+		MEDIA_VERSION(2000), GRAPHICS_STEP(A0, A1)
>+		GRAPHICS_VERSION_RANGE(1270, 1274)
>+		MEDIA_VERSION(1300)
>+		PLATFORM(DG2)
>-- 
>2.25.1
>


More information about the Intel-xe mailing list