All of lore.kernel.org
 help / color / mirror / Atom feed
From: Yunwei Zhang <yunwei.zhang@intel.com>
To: intel-gfx@lists.freedesktop.org
Subject: [PATCH v8 2/2] drm/i915: Implement WaProgramMgsrForL3BankSpecificMmioReads
Date: Tue, 17 Apr 2018 14:05:42 -0700	[thread overview]
Message-ID: <1523999142-15543-1-git-send-email-yunwei.zhang@intel.com> (raw)
In-Reply-To: <1523913843-32499-1-git-send-email-yunwei.zhang@intel.com>

L3Bank could be fused off in hardware for debug purpose, and it
is possible that subslice is enabled while its corresponding L3Bank pairs
are disabled. In such case, if MCR packet control register(0xFDC) is
programed to point to a disabled bank pair, a MMIO read into L3Bank range
will return 0 instead of correct values.

However, this is not going to be the case in any production silicon.
Therefore, we only check at initialization and issue a warning should
this really happen.

References: HSDES#1405586840

v2:
 - use fls instead of find_last_bit (Chris)
 - use is_power_of_2() instead of counting bit set (Chris)
v3:
 - rebase on latest tip
v5:
 - Added references (Mika)
 - Move local variable into scope where they are used (Ursulin)
 - use a new local variable to reduce long line of code (Ursulin)
v6:
 - Some coding style and use more local variables for clearer
   logic (Ursulin)
v7:
 - Rebased.
v8:
 - Reviewed by Oscar.

Cc: Oscar Mateo <oscar.mateo@intel.com>
Cc: Michel Thierry <michel.thierry@intel.com>
Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Cc: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
Cc: Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com>
Signed-off-by: Yunwei Zhang <yunwei.zhang@intel.com>
Reviewed-by: Oscar Mateo <oscar.mateo@intel.com>
---
 drivers/gpu/drm/i915/i915_reg.h          |  4 ++++
 drivers/gpu/drm/i915/intel_device_info.c | 23 +++++++++++++++++++++++
 2 files changed, 27 insertions(+)

diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
index fb10602..6c9c01b 100644
--- a/drivers/gpu/drm/i915/i915_reg.h
+++ b/drivers/gpu/drm/i915/i915_reg.h
@@ -2709,6 +2709,10 @@ enum i915_power_well_id {
 #define   GEN10_F2_SS_DIS_SHIFT		18
 #define   GEN10_F2_SS_DIS_MASK		(0xf << GEN10_F2_SS_DIS_SHIFT)
 
+#define	GEN10_MIRROR_FUSE3		_MMIO(0x9118)
+#define GEN10_L3BANK_PAIR_COUNT     4
+#define GEN10_L3BANK_MASK   0x0F
+
 #define GEN8_EU_DISABLE0		_MMIO(0x9134)
 #define   GEN8_EU_DIS0_S0_MASK		0xffffff
 #define   GEN8_EU_DIS0_S1_SHIFT		24
diff --git a/drivers/gpu/drm/i915/intel_device_info.c b/drivers/gpu/drm/i915/intel_device_info.c
index 2243a23..5a013fa 100644
--- a/drivers/gpu/drm/i915/intel_device_info.c
+++ b/drivers/gpu/drm/i915/intel_device_info.c
@@ -729,6 +729,29 @@ static void wa_init_mcr(struct intel_device_info *info)
 	u32 slice = fls(info->sseu.slice_mask);
 	u32 subslice = fls(info->sseu.subslice_mask[slice]);
 
+	/*
+	 * L3Banks could be fused off in single slice scenario, however, if
+	 * more than one slice is enabled, this should not happen.
+	 */
+	if (is_power_of_2(info->sseu.slice_mask)) {
+		/*
+		 * WaProgramMgsrForL3BankSpecificMmioReads:
+		 * read FUSE3 for enabled L3 Bank IDs, if L3 Bank matches
+		 * enabled subslice, no need to redirect MCR packet
+		 */
+		u32 fuse3 = I915_READ(GEN10_MIRROR_FUSE3);
+		u8 ss_mask = info->sseu.subslice_mask[slice];
+
+		u8 enabled_mask = (ss_mask | ss_mask >> 4) & 0xf;
+		u8 disabled_mask = fuse3 & 0xf;
+
+		/*
+		 * Production silicon should have matched L3Bank and
+		 * subslice enabled
+		 */
+		WARN_ON((enabled_mask & disabled_mask) != enabled_mask);
+	}
+
 	if (INTEL_GEN(dev_priv) >= 11) {
 		mcr_slice_subslice_mask = GEN11_MCR_SLICE_MASK |
 					  GEN11_MCR_SUBSLICE_MASK;
-- 
2.7.4

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

  parent reply	other threads:[~2018-04-17 21:14 UTC|newest]

Thread overview: 72+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-03-22 18:05 [PATCH 1/2] drm/i915/cnl: Implement WaProgramMgsrForCorrectSliceSpecificMmioReads Yunwei Zhang
2018-03-22 18:05 ` [PATCH 2/2] drm/i915: Implement WaProgramMgsrForL3BankSpecificMmioReads Yunwei Zhang
2018-03-26 16:12   ` [PATCH v4 " Yunwei Zhang
2018-03-26 17:03     ` Tvrtko Ursulin
2018-03-27 22:14     ` [PATCH v5 " Yunwei Zhang
2018-03-28  9:39       ` Tvrtko Ursulin
2018-03-28  9:50         ` Tvrtko Ursulin
2018-03-28 21:51         ` Zhang, Yunwei
2018-03-29 16:31       ` [PATCH v6 " Yunwei Zhang
2018-04-16 21:24         ` [PATCH v7 " Yunwei Zhang
2018-04-16 22:11           ` Oscar Mateo
2018-04-17 21:05           ` Yunwei Zhang [this message]
2018-04-17 21:35             ` [PATCH v8 " Oscar Mateo
2018-04-17 22:59             ` [PATCH v9 " Yunwei Zhang
2018-04-18 16:40               ` Oscar Mateo
2018-04-18 16:59                 ` Oscar Mateo
2018-04-18 20:23               ` [PATCH v10 " Yunwei Zhang
2018-04-18 20:46                 ` Oscar Mateo
2018-04-23 16:12                 ` [PATCH v11 2/3] " Yunwei Zhang
2018-04-23 19:55                   ` Rodrigo Vivi
2018-04-23 21:51                     ` Zhang, Yunwei
2018-03-22 18:16 ` ✗ Fi.CI.CHECKPATCH: warning for series starting with [1/2] drm/i915/cnl: Implement WaProgramMgsrForCorrectSliceSpecificMmioReads Patchwork
2018-03-22 18:31 ` ✗ Fi.CI.BAT: " Patchwork
2018-03-23  8:50 ` [PATCH 1/2] " Mika Kuoppala
2018-03-26 16:12 ` [PATCH v4 " Yunwei Zhang
2018-03-26 16:57   ` Tvrtko Ursulin
2018-03-27 14:29     ` Chris Wilson
2018-03-27 16:17     ` Zhang, Yunwei
2018-03-27 14:22   ` Mika Kuoppala
2018-03-27 22:14   ` [PATCH v5 " Yunwei Zhang
2018-03-27 22:27     ` Chris Wilson
2018-03-27 22:49       ` Zhang, Yunwei
2018-03-27 23:13         ` Chris Wilson
2018-03-28 15:54           ` Zhang, Yunwei
2018-03-28 16:03             ` Chris Wilson
2018-03-28 16:11               ` Zhang, Yunwei
2018-03-29 15:44     ` [PATCH v6 " Yunwei Zhang
2018-04-10 16:00       ` Zhang, Yunwei
2018-04-16 21:22       ` [PATCH v7 " Yunwei Zhang
2018-04-16 22:09         ` Oscar Mateo
2018-04-17 15:54           ` Zhang, Yunwei
2018-04-17 21:05         ` [PATCH v8 1/2] drm/i915: " Yunwei Zhang
2018-04-17 21:34           ` Oscar Mateo
2018-04-17 21:53             ` Oscar Mateo
2018-04-17 22:58           ` [PATCH v9 " Yunwei Zhang
2018-04-18 16:30             ` Oscar Mateo
2018-04-18 16:38               ` Chris Wilson
2018-04-18 16:45                 ` Oscar Mateo
2018-04-18 16:47                   ` Oscar Mateo
2018-04-18 20:23             ` [PATCH v10 " Yunwei Zhang
2018-04-18 20:43               ` Oscar Mateo
2018-04-18 22:01               ` [PATCH v11 " Yunwei Zhang
2018-04-18 22:12                 ` Oscar Mateo
2018-04-20 16:02                 ` [PATCH v12 1/3] " Yunwei Zhang
2018-03-26 17:15 ` ✗ Fi.CI.CHECKPATCH: warning for series starting with [v4,1/2] drm/i915/cnl: Implement WaProgramMgsrForCorrectSliceSpecificMmioReads (rev3) Patchwork
2018-03-26 17:32 ` ✓ Fi.CI.BAT: success " Patchwork
2018-03-26 19:51 ` ✓ Fi.CI.IGT: " Patchwork
2018-03-27 23:54 ` ✓ Fi.CI.BAT: success for series starting with [v5,1/2] drm/i915/cnl: Implement WaProgramMgsrForCorrectSliceSpecificMmioReads (rev5) Patchwork
2018-03-28  9:37 ` ✓ Fi.CI.IGT: " Patchwork
2018-03-29 16:19 ` ✗ Fi.CI.BAT: failure for series starting with [v6,1/2] drm/i915/cnl: Implement WaProgramMgsrForCorrectSliceSpecificMmioReads (rev6) Patchwork
2018-03-29 17:33 ` ✗ Fi.CI.BAT: failure for series starting with [v6,1/2] drm/i915/cnl: Implement WaProgramMgsrForCorrectSliceSpecificMmioReads (rev7) Patchwork
2018-04-16 21:52 ` ✗ Fi.CI.SPARSE: warning for series starting with [v7,1/2] drm/i915/cnl: Implement WaProgramMgsrForCorrectSliceSpecificMmioReads (rev9) Patchwork
2018-04-16 22:13 ` ✓ Fi.CI.BAT: success " Patchwork
2018-04-16 23:08 ` ✓ Fi.CI.IGT: " Patchwork
2018-04-17 21:46 ` ✓ Fi.CI.BAT: success for series starting with [v8,1/2] drm/i915: Implement WaProgramMgsrForCorrectSliceSpecificMmioReads (rev11) Patchwork
2018-04-17 22:24 ` ✓ Fi.CI.IGT: " Patchwork
2018-04-17 23:50 ` ✗ Fi.CI.BAT: failure for series starting with [v9,1/2] drm/i915: Implement WaProgramMgsrForCorrectSliceSpecificMmioReads (rev13) Patchwork
2018-04-18 11:03 ` Patchwork
2018-04-18 20:38 ` ✗ Fi.CI.CHECKPATCH: warning for series starting with [v10,1/2] drm/i915: Implement WaProgramMgsrForCorrectSliceSpecificMmioReads (rev15) Patchwork
2018-04-18 20:55 ` ✗ Fi.CI.BAT: failure " Patchwork
2018-04-18 22:18 ` ✗ Fi.CI.CHECKPATCH: warning for series starting with [v11,1/2] drm/i915: Implement WaProgramMgsrForCorrectSliceSpecificMmioReads (rev16) Patchwork
2018-04-18 22:34 ` ✗ Fi.CI.BAT: failure " Patchwork

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1523999142-15543-1-git-send-email-yunwei.zhang@intel.com \
    --to=yunwei.zhang@intel.com \
    --cc=intel-gfx@lists.freedesktop.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.