From: Rodrigo Vivi <rodrigo.vivi@intel.com>
To: "Pandiyan, Dhinakaran" <dhinakaran.pandiyan@intel.com>
Cc: "intel-gfx@lists.freedesktop.org" <intel-gfx@lists.freedesktop.org>
Subject: Re: [PATCH 3/5] drm/i915/psr: Display WA 0884 applied broadly for more HW tracking.
Date: Mon, 26 Feb 2018 15:08:50 -0800 [thread overview]
Message-ID: <20180226230850.GC2294@intel.com> (raw)
In-Reply-To: <1519433283.14651.27.camel@dk-H97M-D3H>
On Fri, Feb 23, 2018 at 04:24:35PM -0800, Pandiyan, Dhinakaran wrote:
> On Tue, 2018-02-13 at 15:26 -0800, Rodrigo Vivi wrote:
> > WA 0884:bxt:all,cnl:*:A - "When FBC is enabled with eDP PSR,
> > the CPU host modify writes may not get updated on the Display
> > as expected.
> > WA: Write 0x00000000 to CUR_SURFLIVE_A with every CPU
> > host modify write to trigger PSR exit."
> >
> > We can also find on spec other cases where they describe
> > bogus writes to cursor registers to force PSR exit with
> > HW tracking. And it was confirmed by HW engineers that
> > this Wa can be safely applied for any frontbuffer activity.
> >
>
> So the idea is to do a dummy MMIO write to trigger PSR exit.
yeap. But not good for PSR2 though :(
We would need something else...
any idea?
So I will hold the v2 for now...
>
> > So let's use this more and more here instead of forcibly
> > disable and re-enable PSR everytime that we have a simple
> > reliable flush case.
> >
> > Other commits improve the fbcon/fbdev use a lot, but this
> > approach is the only when where we can get a fully reliable
> > console with no slowness or missed frames and PSR still
> > enabled and active.
> >
> > Cc: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com>
> > Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
> > ---
> > drivers/gpu/drm/i915/i915_reg.h | 3 +++
> > drivers/gpu/drm/i915/intel_psr.c | 15 +++++++++++++--
> > 2 files changed, 16 insertions(+), 2 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
> > index f6afa5e5e7c1..ac09d17cd835 100644
> > --- a/drivers/gpu/drm/i915/i915_reg.h
> > +++ b/drivers/gpu/drm/i915/i915_reg.h
> > @@ -6007,6 +6007,9 @@ enum {
> > #define IVB_CURSOR_B_OFFSET 0x71080
> > #define IVB_CURSOR_C_OFFSET 0x72080
> >
> > +#define _CUR_SURLIVE 0x700AC
> > +#define CUR_SURLIVE(pipe) _CURSOR2(pipe, _CUR_SURLIVE)
>
> Register address is correct.
> This is a *status* register that provides current surface base address.
> We aren't reading this register anywhere, so writing to it should be
> fine.
>
> > +
> > /* Display A control */
> > #define _DSPACNTR 0x70180
> > #define DISPLAY_PLANE_ENABLE (1<<31)
> > diff --git a/drivers/gpu/drm/i915/intel_psr.c b/drivers/gpu/drm/i915/intel_psr.c
> > index 13409c6301e8..49554036ffb8 100644
> > --- a/drivers/gpu/drm/i915/intel_psr.c
> > +++ b/drivers/gpu/drm/i915/intel_psr.c
> > @@ -946,8 +946,19 @@ void intel_psr_flush(struct drm_i915_private *dev_priv,
> > dev_priv->psr.busy_frontbuffer_bits &= ~frontbuffer_bits;
> >
> > /* By definition flush = invalidate + flush */
> > - if (frontbuffer_bits)
> > - intel_psr_exit(dev_priv);
> > + if (frontbuffer_bits) {
> > + if (IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv)) {
> > + intel_psr_exit(dev_priv);
> > + } else {
> > + /*
> > + * Display WA #0884: all
> > + * This documented WA for bxt can be safely applied
> > + * broadly so we can force HW tracking to exit PSR
> > + * instead of disabling and re-enabling.
> > + */
> > + I915_WRITE(CUR_SURLIVE(pipe), 0);
>
> The workaround asks 0 to be written to CUR_SURFLIVE_A. But I think
> writing to the active pipe register makes sense.Can you add that to the
> comment since the patch deviates from the workaround?
yeap, worth a comment...
>
>
> > + }
> > + }
> >
> > if (!dev_priv->psr.active && !dev_priv->psr.busy_frontbuffer_bits) {
> > if (IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv))
>
>
> There is a psr_activate that follows, you should remove that too. HW
> should be able to activate PSR by itself.
agreed
>
>
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
next prev parent reply other threads:[~2018-02-26 23:08 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-02-13 23:26 [PATCH 1/5] drm/i915: Improve PSR activation timing Rodrigo Vivi
2018-02-13 23:26 ` [PATCH 2/5] drm/i915/psr: Kill scheduled work for Core platforms Rodrigo Vivi
2018-02-23 23:46 ` Pandiyan, Dhinakaran
2018-02-26 23:12 ` Rodrigo Vivi
2018-02-26 23:22 ` Pandiyan, Dhinakaran
2018-02-13 23:26 ` [PATCH 3/5] drm/i915/psr: Display WA 0884 applied broadly for more HW tracking Rodrigo Vivi
2018-02-24 0:24 ` Pandiyan, Dhinakaran
2018-02-26 23:08 ` Rodrigo Vivi [this message]
2018-02-26 23:14 ` Pandiyan, Dhinakaran
2018-02-27 23:24 ` Rodrigo Vivi
2018-02-13 23:26 ` [PATCH 4/5] drm/i915/psr: Display WA #1110 Rodrigo Vivi
2018-02-24 0:36 ` Pandiyan, Dhinakaran
2018-02-24 0:46 ` Pandiyan, Dhinakaran
2018-02-13 23:26 ` [PATCH 5/5] drm/i915/psr: Display WA #1130: bxt, glk Rodrigo Vivi
2018-02-24 0:40 ` Pandiyan, Dhinakaran
2018-02-26 23:05 ` Rodrigo Vivi
2018-02-13 23:50 ` ✗ Fi.CI.BAT: failure for series starting with [1/5] drm/i915: Improve PSR activation timing Patchwork
2018-02-14 0:18 ` [PATCH 1/5] " Pandiyan, Dhinakaran
2018-02-23 23:12 ` Rodrigo Vivi
2018-02-24 0:07 ` Andy Lutomirski
2018-02-28 0:26 ` Chris Wilson
2018-02-28 1:35 ` Andy Lutomirski
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=20180226230850.GC2294@intel.com \
--to=rodrigo.vivi@intel.com \
--cc=dhinakaran.pandiyan@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.