[Intel-gfx] [PATCH v3 2/8] drm/i915: split out stepping info to a new file

Lucas De Marchi lucas.demarchi at intel.com
Tue Mar 9 00:13:33 UTC 2021


On Mon, Mar 08, 2021 at 03:56:39PM +0200, Jani Nikula wrote:
>gt/intel_workarounds.c is decidedly the wrong place for handling
>stepping info. Add new intel_step.[ch] for the data, and move the
>stepping arrays there. No functional changes.
>
>v2: Rename stepping->step
>
>Signed-off-by: Jani Nikula <jani.nikula at intel.com>


Reviewed-by: Lucas De Marchi <lucas.demarchi at intel.com>

but what branch is this supposed to go to?

Lucas De Marchi

>---
> drivers/gpu/drm/i915/Makefile               |  1 +
> drivers/gpu/drm/i915/gt/intel_workarounds.c | 39 -----------------
> drivers/gpu/drm/i915/i915_drv.h             | 19 +--------
> drivers/gpu/drm/i915/intel_step.c           | 46 +++++++++++++++++++++
> drivers/gpu/drm/i915/intel_step.h           | 25 +++++++++++
> 5 files changed, 74 insertions(+), 56 deletions(-)
> create mode 100644 drivers/gpu/drm/i915/intel_step.c
> create mode 100644 drivers/gpu/drm/i915/intel_step.h
>
>diff --git a/drivers/gpu/drm/i915/Makefile b/drivers/gpu/drm/i915/Makefile
>index bc6138880c67..a9fb426d5e41 100644
>--- a/drivers/gpu/drm/i915/Makefile
>+++ b/drivers/gpu/drm/i915/Makefile
>@@ -53,6 +53,7 @@ i915-y += i915_config.o \
> 	  intel_pm.o \
> 	  intel_runtime_pm.o \
> 	  intel_sideband.o \
>+	  intel_step.o \
> 	  intel_uncore.o \
> 	  intel_wakeref.o \
> 	  vlv_suspend.o
>diff --git a/drivers/gpu/drm/i915/gt/intel_workarounds.c b/drivers/gpu/drm/i915/gt/intel_workarounds.c
>index 3b4a7da60f0b..2827d4f2e086 100644
>--- a/drivers/gpu/drm/i915/gt/intel_workarounds.c
>+++ b/drivers/gpu/drm/i915/gt/intel_workarounds.c
>@@ -52,45 +52,6 @@
>  * - Public functions to init or apply the given workaround type.
>  */
>
>-/*
>- * KBL revision ID ordering is bizarre; higher revision ID's map to lower
>- * steppings in some cases.  So rather than test against the revision ID
>- * directly, let's map that into our own range of increasing ID's that we
>- * can test against in a regular manner.
>- */
>-
>-const struct i915_rev_steppings kbl_revids[] = {
>-	[0] = { .gt_stepping = KBL_REVID_A0, .disp_stepping = KBL_REVID_A0 },
>-	[1] = { .gt_stepping = KBL_REVID_B0, .disp_stepping = KBL_REVID_B0 },
>-	[2] = { .gt_stepping = KBL_REVID_C0, .disp_stepping = KBL_REVID_B0 },
>-	[3] = { .gt_stepping = KBL_REVID_D0, .disp_stepping = KBL_REVID_B0 },
>-	[4] = { .gt_stepping = KBL_REVID_F0, .disp_stepping = KBL_REVID_C0 },
>-	[5] = { .gt_stepping = KBL_REVID_C0, .disp_stepping = KBL_REVID_B1 },
>-	[6] = { .gt_stepping = KBL_REVID_D1, .disp_stepping = KBL_REVID_B1 },
>-	[7] = { .gt_stepping = KBL_REVID_G0, .disp_stepping = KBL_REVID_C0 },
>-};
>-
>-const struct i915_rev_steppings tgl_uy_revid_step_tbl[] = {
>-	[0] = { .gt_stepping = STEP_A0, .disp_stepping = STEP_A0 },
>-	[1] = { .gt_stepping = STEP_B0, .disp_stepping = STEP_C0 },
>-	[2] = { .gt_stepping = STEP_B1, .disp_stepping = STEP_C0 },
>-	[3] = { .gt_stepping = STEP_C0, .disp_stepping = STEP_D0 },
>-};
>-
>-/* Same GT stepping between tgl_uy_revids and tgl_revids don't mean the same HW */
>-const struct i915_rev_steppings tgl_revid_step_tbl[] = {
>-	[0] = { .gt_stepping = STEP_A0, .disp_stepping = STEP_B0 },
>-	[1] = { .gt_stepping = STEP_B0, .disp_stepping = STEP_D0 },
>-};
>-
>-const struct i915_rev_steppings adls_revid_step_tbl[] = {
>-	[0x0] = { .gt_stepping = STEP_A0, .disp_stepping = STEP_A0 },
>-	[0x1] = { .gt_stepping = STEP_A0, .disp_stepping = STEP_A2 },
>-	[0x4] = { .gt_stepping = STEP_B0, .disp_stepping = STEP_B0 },
>-	[0x8] = { .gt_stepping = STEP_C0, .disp_stepping = STEP_B0 },
>-	[0xC] = { .gt_stepping = STEP_D0, .disp_stepping = STEP_C0 },
>-};
>-
> static void wa_init_start(struct i915_wa_list *wal, const char *name, const char *engine_name)
> {
> 	wal->name = name;
>diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
>index 2f511bf2bd82..02170edd6628 100644
>--- a/drivers/gpu/drm/i915/i915_drv.h
>+++ b/drivers/gpu/drm/i915/i915_drv.h
>@@ -86,9 +86,10 @@
> #include "gt/uc/intel_uc.h"
>
> #include "intel_device_info.h"
>+#include "intel_memory_region.h"
> #include "intel_pch.h"
> #include "intel_runtime_pm.h"
>-#include "intel_memory_region.h"
>+#include "intel_step.h"
> #include "intel_uncore.h"
> #include "intel_wakeref.h"
> #include "intel_wopcm.h"
>@@ -1471,14 +1472,6 @@ enum {
> 	KBL_REVID_G0,
> };
>
>-struct i915_rev_steppings {
>-	u8 gt_stepping;
>-	u8 disp_stepping;
>-};
>-
>-/* Defined in intel_workarounds.c */
>-extern const struct i915_rev_steppings kbl_revids[];
>-
> #define IS_KBL_GT_REVID(dev_priv, since, until) \
> 	(IS_KABYLAKE(dev_priv) && \
> 	 kbl_revids[INTEL_REVID(dev_priv)].gt_stepping >= since && \
>@@ -1527,14 +1520,6 @@ enum {
> 	STEP_D0,
> };
>
>-#define TGL_UY_REVID_STEP_TBL_SIZE	4
>-#define TGL_REVID_STEP_TBL_SIZE		2
>-#define ADLS_REVID_STEP_TBL_SIZE	13
>-
>-extern const struct i915_rev_steppings tgl_uy_revid_step_tbl[TGL_UY_REVID_STEP_TBL_SIZE];
>-extern const struct i915_rev_steppings tgl_revid_step_tbl[TGL_REVID_STEP_TBL_SIZE];
>-extern const struct i915_rev_steppings adls_revid_step_tbl[ADLS_REVID_STEP_TBL_SIZE];
>-
> static inline const struct i915_rev_steppings *
> tgl_stepping_get(struct drm_i915_private *dev_priv)
> {
>diff --git a/drivers/gpu/drm/i915/intel_step.c b/drivers/gpu/drm/i915/intel_step.c
>new file mode 100644
>index 000000000000..e19820cbe8e3
>--- /dev/null
>+++ b/drivers/gpu/drm/i915/intel_step.c
>@@ -0,0 +1,46 @@
>+// SPDX-License-Identifier: MIT
>+/*
>+ * Copyright © 2020,2021 Intel Corporation
>+ */
>+
>+#include "i915_drv.h"
>+#include "intel_step.h"
>+
>+/*
>+ * KBL revision ID ordering is bizarre; higher revision ID's map to lower
>+ * steppings in some cases.  So rather than test against the revision ID
>+ * directly, let's map that into our own range of increasing ID's that we
>+ * can test against in a regular manner.
>+ */
>+
>+const struct i915_rev_steppings kbl_revids[] = {
>+	[0] = { .gt_stepping = KBL_REVID_A0, .disp_stepping = KBL_REVID_A0 },
>+	[1] = { .gt_stepping = KBL_REVID_B0, .disp_stepping = KBL_REVID_B0 },
>+	[2] = { .gt_stepping = KBL_REVID_C0, .disp_stepping = KBL_REVID_B0 },
>+	[3] = { .gt_stepping = KBL_REVID_D0, .disp_stepping = KBL_REVID_B0 },
>+	[4] = { .gt_stepping = KBL_REVID_F0, .disp_stepping = KBL_REVID_C0 },
>+	[5] = { .gt_stepping = KBL_REVID_C0, .disp_stepping = KBL_REVID_B1 },
>+	[6] = { .gt_stepping = KBL_REVID_D1, .disp_stepping = KBL_REVID_B1 },
>+	[7] = { .gt_stepping = KBL_REVID_G0, .disp_stepping = KBL_REVID_C0 },
>+};
>+
>+const struct i915_rev_steppings tgl_uy_revid_step_tbl[] = {
>+	[0] = { .gt_stepping = STEP_A0, .disp_stepping = STEP_A0 },
>+	[1] = { .gt_stepping = STEP_B0, .disp_stepping = STEP_C0 },
>+	[2] = { .gt_stepping = STEP_B1, .disp_stepping = STEP_C0 },
>+	[3] = { .gt_stepping = STEP_C0, .disp_stepping = STEP_D0 },
>+};
>+
>+/* Same GT stepping between tgl_uy_revids and tgl_revids don't mean the same HW */
>+const struct i915_rev_steppings tgl_revid_step_tbl[] = {
>+	[0] = { .gt_stepping = STEP_A0, .disp_stepping = STEP_B0 },
>+	[1] = { .gt_stepping = STEP_B0, .disp_stepping = STEP_D0 },
>+};
>+
>+const struct i915_rev_steppings adls_revid_step_tbl[] = {
>+	[0x0] = { .gt_stepping = STEP_A0, .disp_stepping = STEP_A0 },
>+	[0x1] = { .gt_stepping = STEP_A0, .disp_stepping = STEP_A2 },
>+	[0x4] = { .gt_stepping = STEP_B0, .disp_stepping = STEP_B0 },
>+	[0x8] = { .gt_stepping = STEP_C0, .disp_stepping = STEP_B0 },
>+	[0xC] = { .gt_stepping = STEP_D0, .disp_stepping = STEP_C0 },
>+};
>diff --git a/drivers/gpu/drm/i915/intel_step.h b/drivers/gpu/drm/i915/intel_step.h
>new file mode 100644
>index 000000000000..af922ae3bb4e
>--- /dev/null
>+++ b/drivers/gpu/drm/i915/intel_step.h
>@@ -0,0 +1,25 @@
>+/* SPDX-License-Identifier: MIT */
>+/*
>+ * Copyright © 2020,2021 Intel Corporation
>+ */
>+
>+#ifndef __INTEL_STEP_H__
>+#define __INTEL_STEP_H__
>+
>+#include <linux/types.h>
>+
>+struct i915_rev_steppings {
>+	u8 gt_stepping;
>+	u8 disp_stepping;
>+};
>+
>+#define TGL_UY_REVID_STEP_TBL_SIZE	4
>+#define TGL_REVID_STEP_TBL_SIZE		2
>+#define ADLS_REVID_STEP_TBL_SIZE	13
>+
>+extern const struct i915_rev_steppings kbl_revids[];
>+extern const struct i915_rev_steppings tgl_uy_revid_step_tbl[TGL_UY_REVID_STEP_TBL_SIZE];
>+extern const struct i915_rev_steppings tgl_revid_step_tbl[TGL_REVID_STEP_TBL_SIZE];
>+extern const struct i915_rev_steppings adls_revid_step_tbl[ADLS_REVID_STEP_TBL_SIZE];
>+
>+#endif /* __INTEL_STEP_H__ */
>-- 
>2.20.1
>


More information about the Intel-gfx mailing list