From: Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com>
To: Yunwei Zhang <yunwei.zhang@intel.com>, intel-gfx@lists.freedesktop.org
Subject: Re: [PATCH v5 2/2] drm/i915: Implement WaProgramMgsrForL3BankSpecificMmioReads
Date: Wed, 28 Mar 2018 10:50:51 +0100 [thread overview]
Message-ID: <a8cb18fa-50ac-c03b-320a-43a9ff6fb445@linux.intel.com> (raw)
In-Reply-To: <ce01918b-ff5a-f8de-43de-bc1a64f8b664@linux.intel.com>
On 28/03/2018 10:39, Tvrtko Ursulin wrote:
>
> On 27/03/2018 23:14, Yunwei Zhang wrote:
>> 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)
>>
>> 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>
>> ---
>> drivers/gpu/drm/i915/i915_reg.h | 4 ++++
>> drivers/gpu/drm/i915/intel_engine_cs.c | 20 ++++++++++++++++++++
>> 2 files changed, 24 insertions(+)
>>
>> diff --git a/drivers/gpu/drm/i915/i915_reg.h
>> b/drivers/gpu/drm/i915/i915_reg.h
>> index 1bca695f..4f2f5e1 100644
>> --- a/drivers/gpu/drm/i915/i915_reg.h
>> +++ b/drivers/gpu/drm/i915/i915_reg.h
>> @@ -2691,6 +2691,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_engine_cs.c
>> b/drivers/gpu/drm/i915/intel_engine_cs.c
>> index 4c78d1e..7be7a75 100644
>> --- a/drivers/gpu/drm/i915/intel_engine_cs.c
>> +++ b/drivers/gpu/drm/i915/intel_engine_cs.c
>> @@ -811,6 +811,26 @@ static u32 calculate_mcr(struct drm_i915_private
>> *dev_priv, u32 mcr)
>> static void wa_init_mcr(struct drm_i915_private *dev_priv)
>> {
>> u32 mcr;
>> + const struct sseu_dev_info *sseu = &(INTEL_INFO(dev_priv)->sseu);
>
> Another style nitpick - sorry I did not notice it before - we typically
> order assignments from functions arguments to locals first, then pure
> locals. Also we typically try to make the declaration block start wide
> and then narrow.
>
>> +
>> + /* If more than one slice are enabled, L3Banks should be all
>> enabled */
>
> L3Banks should be all enabled, or enabled for all enabled slices? (That
> comment below says "should have _matched_".
>
>> + if (is_power_of_2(sseu->slice_mask)) {
>> + /*
>> + * WaProgramMgsrForL3BankSpecificMmioReads:
>> + * read FUSE3 for enabled L3 Bank IDs, if L3 Bank matches
>> + * enabled subslice, no need to redirect MCR packet
>> + */
>
> This comment implies there will be some action taken depending on this
> conditional relating to the MCR, but there is nothing there?
>
> It is not clear to me what should and whether perhaps this comment
> should be pulled up and merged with the one above the conditional.
>
>> + u32 slice = fls(sseu->slice_mask);
>> + u32 fuse3 = I915_READ(GEN10_MIRROR_FUSE3);
>> + u8 ss_mask = sseu->subslice_mask[slice];
>
> Insert blank line after declarations.
>
> Also, is it correct to only consider the subslice mask of the last slice
> for this check?
>
>> + /*
>> + * Production silicon should have matched L3Bank and
>> + * subslice enabled
>> + */
>> + WARN_ON(!((fuse3 & GEN10_L3BANK_MASK) &
>> + ((ss_mask | ss_mask >> GEN10_L3BANK_PAIR_COUNT) & >
>> + GEN10_L3BANK_MASK)));
>
> Mask in fuse3 is the disabled mask right, since BSpec calls them "L3
> Bank Disable Select"?
>
> Should you not be checking that none of the enabled slices have L3Bank
> disabled, while the above looks like it can miss a partial mismatch?
> Something like this:
>
> u8 enabled_mask = (ss_mask | ss_mask >> 4) & 0xf;
> u8 disabled_mask = fuse3 & 0xf;
>
> WARN_ON((enabled_mask & disabled_mask) != enabled_mask);
Oops no, that's wrong, should be "(enabled_mask & ~disabled_mask) !=
enabled_mask)" I think. Which is then the same as WARN_ON(enabled_mask &
disabled_mask) - aka same bit is both enabled and disabled - so maybe I
got the meaning of "L3 Bank Disable Select" wrong.
Regards,
Tvrtko
>
>> + }
>> mcr = I915_READ(GEN8_MCR_SELECTOR);
>> mcr = calculate_mcr(dev_priv, mcr);
>>
>
> Regards,
>
> Tvrtko
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
next prev parent reply other threads:[~2018-03-28 9:50 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 [this message]
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 ` [PATCH v8 " Yunwei Zhang
2018-04-17 21:35 ` 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=a8cb18fa-50ac-c03b-320a-43a9ff6fb445@linux.intel.com \
--to=tvrtko.ursulin@linux.intel.com \
--cc=intel-gfx@lists.freedesktop.org \
--cc=yunwei.zhang@intel.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).