From: Oscar Mateo <oscar.mateo@intel.com>
To: Rodrigo Vivi <rodrigo.vivi@intel.com>, intel-gfx@lists.freedesktop.org
Cc: Ben Widawsky <ben@bwidawsk.net>
Subject: Re: [PATCH 1/2] drm/i915/cnl: Add support slice/subslice/eu configs
Date: Wed, 20 Sep 2017 10:37:32 -0700 [thread overview]
Message-ID: <cedd43b2-dd72-ba9e-4b3b-c4f343ee7d32@intel.com> (raw)
In-Reply-To: <20170919220609.28515-1-rodrigo.vivi@intel.com>
On 09/19/2017 03:06 PM, Rodrigo Vivi wrote:
> From: Ben Widawsky <ben@bwidawsk.net>
>
> Cannonlake Slice and Subslice information has changed.
>
> This patch initially provided by Ben adds the proper sseu
> initialization.
>
> v2: This v2 done by Rodrigo includes:
> - Fix on Total slices count by avoiding [1][2] and [2][2].
> - Inclusion of EU Per Subslice.
> - Commit message.
> v3: This v3 done by Rodrigo includes:
> - Handle all possible bits and extra fuse register.
> - Use INTEL_GEN macro.
> - Fully assume uniform distribution so remove union
> with eu_per_subslice and add proper the comment.
> v4: This v4 done by Rodrigo includes:
> - Consider all bits available: 6 bits for slices [27:22]
> and 4 for subslices [21:18].
> v5: This v5 done by Rodrigo includes:
> - sseu->subslice_mask = (1 << 4) - 1 - missed on previous
> versions and noticed by Oscar.
>
> Cc: Oscar Mateo <oscar.mateo@intel.com>
> Signed-off-by: Ben Widawsky <ben@bwidawsk.net>
> Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
> ---
> drivers/gpu/drm/i915/i915_reg.h | 8 +++++++
> drivers/gpu/drm/i915/intel_device_info.c | 37 +++++++++++++++++++++++++++++++-
> 2 files changed, 44 insertions(+), 1 deletion(-)
Reviewed-by: Oscar Mateo <oscar.mateo@intel.com>
> diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
> index 94b40a469afd..9f4b8faf2982 100644
> --- a/drivers/gpu/drm/i915/i915_reg.h
> +++ b/drivers/gpu/drm/i915/i915_reg.h
> @@ -2730,6 +2730,11 @@ enum i915_power_well_id {
> #define GEN9_F2_SS_DIS_SHIFT 20
> #define GEN9_F2_SS_DIS_MASK (0xf << GEN9_F2_SS_DIS_SHIFT)
>
> +#define GEN10_F2_S_ENA_SHIFT 22
> +#define GEN10_F2_S_ENA_MASK (0x3f << GEN10_F2_S_ENA_SHIFT)
> +#define GEN10_F2_SS_DIS_SHIFT 18
> +#define GEN10_F2_SS_DIS_MASK (0xf << GEN10_F2_SS_DIS_SHIFT)
> +
> #define GEN8_EU_DISABLE0 _MMIO(0x9134)
> #define GEN8_EU_DIS0_S0_MASK 0xffffff
> #define GEN8_EU_DIS0_S1_SHIFT 24
> @@ -2745,6 +2750,9 @@ enum i915_power_well_id {
>
> #define GEN9_EU_DISABLE(slice) _MMIO(0x9134 + (slice)*0x4)
>
> +#define GEN10_EU_DISABLE3 _MMIO(0x9140)
> +#define GEN10_EU_DIS_SS_MASK 0xff
> +
> #define GEN6_BSD_SLEEP_PSMI_CONTROL _MMIO(0x12050)
> #define GEN6_BSD_SLEEP_MSG_DISABLE (1 << 0)
> #define GEN6_BSD_SLEEP_FLUSH_DISABLE (1 << 2)
> diff --git a/drivers/gpu/drm/i915/intel_device_info.c b/drivers/gpu/drm/i915/intel_device_info.c
> index 43831b09b47a..d2e7ae61775d 100644
> --- a/drivers/gpu/drm/i915/intel_device_info.c
> +++ b/drivers/gpu/drm/i915/intel_device_info.c
> @@ -82,6 +82,39 @@ void intel_device_info_dump(struct drm_i915_private *dev_priv)
> #undef PRINT_FLAG
> }
>
> +static void gen10_sseu_info_init(struct drm_i915_private *dev_priv)
> +{
> + struct sseu_dev_info *sseu = &mkwrite_device_info(dev_priv)->sseu;
> + const u32 fuse2 = I915_READ(GEN8_FUSE2);
> +
> + sseu->slice_mask = (fuse2 & GEN10_F2_S_ENA_MASK) >>
> + GEN10_F2_S_ENA_SHIFT;
> + sseu->subslice_mask = (1 << 4) - 1;
> + sseu->subslice_mask &= ~((fuse2 & GEN10_F2_SS_DIS_MASK) >>
> + GEN10_F2_SS_DIS_SHIFT);
> +
> + sseu->eu_total = hweight32(~I915_READ(GEN8_EU_DISABLE0));
> + sseu->eu_total += hweight32(~I915_READ(GEN8_EU_DISABLE1));
> + sseu->eu_total += hweight32(~I915_READ(GEN8_EU_DISABLE2));
> + sseu->eu_total += hweight8(~(I915_READ(GEN10_EU_DISABLE3) &
> + GEN10_EU_DIS_SS_MASK));
> +
> + /*
> + * CNL is expected to always have a uniform distribution
> + * of EU across subslices with the exception that any one
> + * EU in any one subslice may be fused off for die
> + * recovery.
> + */
> + sseu->eu_per_subslice = sseu_subslice_total(sseu) ?
> + DIV_ROUND_UP(sseu->eu_total,
> + sseu_subslice_total(sseu)) : 0;
> +
> + /* No restrictions on Power Gating */
> + sseu->has_slice_pg = 1;
> + sseu->has_subslice_pg = 1;
> + sseu->has_eu_pg = 1;
> +}
> +
> static void cherryview_sseu_info_init(struct drm_i915_private *dev_priv)
> {
> struct sseu_dev_info *sseu = &mkwrite_device_info(dev_priv)->sseu;
> @@ -409,8 +442,10 @@ void intel_device_info_runtime_init(struct drm_i915_private *dev_priv)
> cherryview_sseu_info_init(dev_priv);
> else if (IS_BROADWELL(dev_priv))
> broadwell_sseu_info_init(dev_priv);
> - else if (INTEL_INFO(dev_priv)->gen >= 9)
> + else if (INTEL_GEN(dev_priv) == 9)
> gen9_sseu_info_init(dev_priv);
> + else if (INTEL_GEN(dev_priv) >= 10)
> + gen10_sseu_info_init(dev_priv);
>
> DRM_DEBUG_DRIVER("slice mask: %04x\n", info->sseu.slice_mask);
> DRM_DEBUG_DRIVER("slice total: %u\n", hweight8(info->sseu.slice_mask));
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
next prev parent reply other threads:[~2017-09-20 17:37 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-09-19 22:06 [PATCH 1/2] drm/i915/cnl: Add support slice/subslice/eu configs Rodrigo Vivi
2017-09-19 22:06 ` [PATCH 2/2] drm/i915/cnl: Fix SSEU Device Status Rodrigo Vivi
2017-09-20 17:37 ` Oscar Mateo
2017-09-19 22:48 ` ✗ Fi.CI.BAT: warning for series starting with [1/2] drm/i915/cnl: Add support slice/subslice/eu configs Patchwork
2017-09-20 17:37 ` Oscar Mateo [this message]
-- strict thread matches above, loose matches on Subject: below --
2017-09-20 18:35 [PATCH 1/2] " Rodrigo Vivi
2017-09-18 18:49 Rodrigo Vivi
2017-09-19 20:31 ` Oscar Mateo
2017-09-19 21:02 ` Rodrigo Vivi
2017-09-19 21:21 ` Oscar Mateo
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=cedd43b2-dd72-ba9e-4b3b-c4f343ee7d32@intel.com \
--to=oscar.mateo@intel.com \
--cc=ben@bwidawsk.net \
--cc=intel-gfx@lists.freedesktop.org \
--cc=rodrigo.vivi@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