From: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
To: Matt Roper <matthew.d.roper@intel.com>, intel-gfx@lists.freedesktop.org
Subject: Re: [PATCH v4 08/17] drm/i915: Add distrust_bios_wm flag to dev_priv (v2)
Date: Thu, 12 May 2016 12:09:32 +0200 [thread overview]
Message-ID: <26acb9fd-ccc0-6622-4e64-add9d5a6f2bf@linux.intel.com> (raw)
In-Reply-To: <1462982541-1132-1-git-send-email-matthew.d.roper@intel.com>
Op 11-05-16 om 18:02 schreef Matt Roper:
> SKL-style platforms can't fully trust the watermark/DDB settings
> programmed by the BIOS and need to do extra sanitization on their first
> atomic update. Add a flag to dev_priv that is set during hardware
> readout and cleared at the end of the first commit.
>
> Note that for the somewhat common case where everything is turned off
> when the driver starts up, we don't need to bother with a recompute...we
> know exactly what the DDB should be (all zero's) so just setup the DDB
> directly in that case.
>
> v2:
> - Move clearing of distrust_bios_wm up below the swap_state call since
> it's a more natural / self-explanatory location. (Maarten)
> - Use dev_priv->active_crtcs to test whether any CRTC's are turned on
> during HW WM readout rather than trying to count the active CRTC's
> again ourselves. (Maarten)
>
> Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
> Signed-off-by: Matt Roper <matthew.d.roper@intel.com>
> ---
> drivers/gpu/drm/i915/i915_drv.h | 7 +++++++
> drivers/gpu/drm/i915/intel_display.c | 1 +
> drivers/gpu/drm/i915/intel_pm.c | 8 ++++++++
> 3 files changed, 16 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
> index c41655c..83806e7 100644
> --- a/drivers/gpu/drm/i915/i915_drv.h
> +++ b/drivers/gpu/drm/i915/i915_drv.h
> @@ -1993,6 +1993,13 @@ struct drm_i915_private {
> * cstate->wm.need_postvbl_update.
> */
> struct mutex wm_mutex;
> +
> + /*
> + * Set during HW readout of watermarks/DDB. Some platforms
> + * need to know when we're still using BIOS-provided values
> + * (which we don't fully trust).
> + */
> + bool distrust_bios_wm;
> } wm;
>
> struct i915_runtime_pm pm;
> diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
> index a386a2d..beb95d1 100644
> --- a/drivers/gpu/drm/i915/intel_display.c
> +++ b/drivers/gpu/drm/i915/intel_display.c
> @@ -13595,6 +13595,7 @@ static int intel_atomic_commit(struct drm_device *dev,
>
> drm_atomic_helper_swap_state(dev, state);
> dev_priv->wm.config = intel_state->wm_config;
> + dev_priv->wm.distrust_bios_wm = false;
> intel_shared_dpll_commit(state);
>
> if (intel_state->modeset) {
> diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
> index 709ac40..946a0b0 100644
> --- a/drivers/gpu/drm/i915/intel_pm.c
> +++ b/drivers/gpu/drm/i915/intel_pm.c
> @@ -4026,6 +4026,14 @@ void skl_wm_get_hw_state(struct drm_device *dev)
> list_for_each_entry(crtc, &dev->mode_config.crtc_list, head)
> skl_pipe_wm_get_hw_state(crtc);
>
> + if (dev_priv->active_crtcs) {
> + /* Fully recompute DDB on first atomic commit */
> + dev_priv->wm.distrust_bios_wm = true;
> + } else {
> + /* Easy/common case; just sanitize DDB now if everything off */
> + memset(ddb, 0, sizeof(*ddb));
> + }
> +
> /* Calculate plane data rates */
> for_each_intel_crtc(dev, intel_crtc) {
> struct intel_crtc_state *cstate = intel_crtc->config;
Reviewed-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
next prev parent reply other threads:[~2016-05-12 10:09 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-05-10 1:21 [PATCH v4 00/17] Pre-calculate SKL-style atomicwatermarks Matt Roper
2016-05-10 1:21 ` [PATCH v4 01/17] drm/i915: Reorganize WM structs/unions in CRTC state Matt Roper
2016-05-10 1:21 ` [PATCH v4 02/17] drm/i915: Rename s/skl_compute_pipe_wm/skl_build_pipe_wm/ Matt Roper
2016-05-10 1:21 ` [PATCH v4 03/17] drm/i915/gen9: Cache plane data rates in CRTC state Matt Roper
2016-05-10 1:21 ` [PATCH v4 04/17] drm/i915/gen9: Allow calculation of data rate for in-flight state (v2) Matt Roper
2016-05-10 1:21 ` [PATCH v4 05/17] drm/i915/gen9: Store plane minimum blocks in CRTC wm " Matt Roper
2016-05-10 1:21 ` [PATCH v4 06/17] drm/i915: Track whether an atomic transaction changes the active CRTC's Matt Roper
2016-05-10 1:21 ` [PATCH v4 07/17] drm/i915/gen9: Allow skl_allocate_pipe_ddb() to operate on in-flight state (v3) Matt Roper
2016-05-10 1:21 ` [PATCH v4 08/17] drm/i915: Add distrust_bios_wm flag to dev_priv Matt Roper
2016-05-11 10:38 ` Maarten Lankhorst
2016-05-11 15:48 ` Matt Roper
2016-05-11 16:02 ` [PATCH v4 08/17] drm/i915: Add distrust_bios_wm flag to dev_priv (v2) Matt Roper
2016-05-12 10:09 ` Maarten Lankhorst [this message]
2016-05-10 1:21 ` [PATCH v4 09/17] drm/i915/gen9: Compute DDB allocation at atomic check time (v4) Matt Roper
2016-05-10 1:21 ` [PATCH v4 10/17] drm/i915/gen9: Drop re-allocation of DDB at atomic commit (v2) Matt Roper
2016-05-10 1:21 ` [PATCH v4 11/17] drm/i915/gen9: Calculate plane WM's from state Matt Roper
2016-05-10 1:21 ` [PATCH v4 12/17] drm/i915/gen9: Allow watermark calculation on in-flight atomic state (v3) Matt Roper
2016-05-10 1:21 ` [PATCH v4 13/17] drm/i915/gen9: Use a bitmask to track dirty pipe watermarks Matt Roper
2016-05-10 1:21 ` [PATCH v4 14/17] drm/i915/gen9: Propagate watermark calculation failures up the call chain Matt Roper
2016-05-10 1:21 ` [PATCH v4 15/17] drm/i915/gen9: Calculate watermarks during atomic 'check' Matt Roper
2016-05-10 1:21 ` [PATCH v4 16/17] drm/i915/gen9: Reject display updates that exceed wm limitations (v2) Matt Roper
2016-05-10 1:21 ` [PATCH v4 17/17] drm/i915: Remove wm_config from dev_priv/intel_atomic_state Matt Roper
2016-05-11 16:30 ` ✗ Ro.CI.BAT: failure for Pre-calculate SKL-style atomicwatermarks (rev2) 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=26acb9fd-ccc0-6622-4e64-add9d5a6f2bf@linux.intel.com \
--to=maarten.lankhorst@linux.intel.com \
--cc=intel-gfx@lists.freedesktop.org \
--cc=matthew.d.roper@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