diff mbox

[4/5] drm/i915/frontbuffer: Remove early frontbuffer flush in prepare_plane_fb()

Message ID 20180216043322.22874-4-dhinakaran.pandiyan@intel.com (mailing list archive)
State New, archived
Headers show

Commit Message

Dhinakaran Pandiyan Feb. 16, 2018, 4:33 a.m. UTC
Preparing a framebuffer should not require a flush. _post_plane_update()
takes care of flushing when a flip is scheduled, this should be
sufficient for PSR and FBC.

Cc: Paulo Zanoni <paulo.r.zanoni@intel.com>
Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Cc: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com>
---
 drivers/gpu/drm/i915/intel_display.c | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

Comments

Chris Wilson Feb. 16, 2018, 8:55 a.m. UTC | #1
Quoting Dhinakaran Pandiyan (2018-02-16 04:33:21)
> Preparing a framebuffer should not require a flush. _post_plane_update()
> takes care of flushing when a flip is scheduled, this should be
> sufficient for PSR and FBC.

Makes sense.
 
> Cc: Paulo Zanoni <paulo.r.zanoni@intel.com>
> Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
> Cc: Chris Wilson <chris@chris-wilson.co.uk>
> Signed-off-by: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com>

Also
Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
to validate the flow through atomic.
-Chris

> ---
>  drivers/gpu/drm/i915/intel_display.c | 6 ++----
>  1 file changed, 2 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
> index 24ca43424c44..c611855bf05a 100644
> --- a/drivers/gpu/drm/i915/intel_display.c
> +++ b/drivers/gpu/drm/i915/intel_display.c
> @@ -12717,12 +12717,10 @@ intel_prepare_plane_fb(struct drm_plane *plane,
>                 struct i915_vma *vma;
>  
>                 vma = intel_pin_and_fence_fb_obj(fb, new_state->rotation);
> -               if (!IS_ERR(vma)) {
> +               if (!IS_ERR(vma))
>                         to_intel_plane_state(new_state)->vma = vma;
> -                       intel_fb_obj_flush(obj, ORIGIN_DIRTYFB);
> -               } else {
> +               else
>                         ret =  PTR_ERR(vma);
> -               }
>         }
>  
>         i915_gem_object_wait_priority(obj, 0, I915_PRIORITY_DISPLAY);
> -- 
> 2.14.1
>
Dhinakaran Pandiyan Feb. 16, 2018, 7:27 p.m. UTC | #2
On Fri, 2018-02-16 at 08:55 +0000, Chris Wilson wrote:
> Quoting Dhinakaran Pandiyan (2018-02-16 04:33:21)

> > Preparing a framebuffer should not require a flush. _post_plane_update()

> > takes care of flushing when a flip is scheduled, this should be

> > sufficient for PSR and FBC.

> 

> Makes sense.

>  

I also think this might speed up the flips a bit by avoiding flushes. 

> > Cc: Paulo Zanoni <paulo.r.zanoni@intel.com>

> > Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>

> > Cc: Chris Wilson <chris@chris-wilson.co.uk>

> > Signed-off-by: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com>

> 

> Also

> Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>

> to validate the flow through atomic.

> -Chris

> 

> > ---

> >  drivers/gpu/drm/i915/intel_display.c | 6 ++----

> >  1 file changed, 2 insertions(+), 4 deletions(-)

> > 

> > diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c

> > index 24ca43424c44..c611855bf05a 100644

> > --- a/drivers/gpu/drm/i915/intel_display.c

> > +++ b/drivers/gpu/drm/i915/intel_display.c

> > @@ -12717,12 +12717,10 @@ intel_prepare_plane_fb(struct drm_plane *plane,

> >                 struct i915_vma *vma;

> >  

> >                 vma = intel_pin_and_fence_fb_obj(fb, new_state->rotation);

> > -               if (!IS_ERR(vma)) {

> > +               if (!IS_ERR(vma))

> >                         to_intel_plane_state(new_state)->vma = vma;

> > -                       intel_fb_obj_flush(obj, ORIGIN_DIRTYFB);

> > -               } else {

> > +               else

> >                         ret =  PTR_ERR(vma);

> > -               }

> >         }

> >  

> >         i915_gem_object_wait_priority(obj, 0, I915_PRIORITY_DISPLAY);

> > -- 

> > 2.14.1

> > 

> _______________________________________________

> Intel-gfx mailing list

> Intel-gfx@lists.freedesktop.org

> https://lists.freedesktop.org/mailman/listinfo/intel-gfx
Maarten Lankhorst Feb. 19, 2018, 9:07 a.m. UTC | #3
Op 16-02-18 om 20:27 schreef Pandiyan, Dhinakaran:
> On Fri, 2018-02-16 at 08:55 +0000, Chris Wilson wrote:
>> Quoting Dhinakaran Pandiyan (2018-02-16 04:33:21)
>>> Preparing a framebuffer should not require a flush. _post_plane_update()
>>> takes care of flushing when a flip is scheduled, this should be
>>> sufficient for PSR and FBC.
>> Makes sense.
>>  
> I also think this might speed up the flips a bit by avoiding flushes. 
>
>>> Cc: Paulo Zanoni <paulo.r.zanoni@intel.com>
>>> Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
>>> Cc: Chris Wilson <chris@chris-wilson.co.uk>
>>> Signed-off-by: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com>
>> Also
>> Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
>> to validate the flow through atomic.
>> -Chris
>>
Page flips used to do intel_frontbuffer_flip_prepare here, followed by intel_frontbuffer_flip_complete. I think it would make sense to change the patch to do that?


Then again, seems like frontbuffer tracking should be done per crtc..
Dhinakaran Pandiyan Feb. 24, 2018, 3:24 a.m. UTC | #4
On Mon, 2018-02-19 at 10:07 +0100, Maarten Lankhorst wrote:
> Op 16-02-18 om 20:27 schreef Pandiyan, Dhinakaran:

> > On Fri, 2018-02-16 at 08:55 +0000, Chris Wilson wrote:

> >> Quoting Dhinakaran Pandiyan (2018-02-16 04:33:21)

> >>> Preparing a framebuffer should not require a flush. _post_plane_update()

> >>> takes care of flushing when a flip is scheduled, this should be

> >>> sufficient for PSR and FBC.

> >> Makes sense.

> >>  

> > I also think this might speed up the flips a bit by avoiding flushes. 

> >

> >>> Cc: Paulo Zanoni <paulo.r.zanoni@intel.com>

> >>> Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>

> >>> Cc: Chris Wilson <chris@chris-wilson.co.uk>

> >>> Signed-off-by: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com>

> >> Also

> >> Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>

> >> to validate the flow through atomic.

> >> -Chris

> >>

> Page flips used to do intel_frontbuffer_flip_prepare here, followed by intel_frontbuffer_flip_complete. I think it would make sense to change the patch to do that?

> 


I have no context why it was removed, I'll have to understand that
change and get back to you.

> 

> Then again, seems like frontbuffer tracking should be done per crtc..

> _______________________________________________

> Intel-gfx mailing list

> Intel-gfx@lists.freedesktop.org

> https://lists.freedesktop.org/mailman/listinfo/intel-gfx
Ville Syrjälä Feb. 28, 2018, 8:28 p.m. UTC | #5
On Sat, Feb 24, 2018 at 03:24:55AM +0000, Pandiyan, Dhinakaran wrote:
> 
> 
> 
> On Mon, 2018-02-19 at 10:07 +0100, Maarten Lankhorst wrote:
> > Op 16-02-18 om 20:27 schreef Pandiyan, Dhinakaran:
> > > On Fri, 2018-02-16 at 08:55 +0000, Chris Wilson wrote:
> > >> Quoting Dhinakaran Pandiyan (2018-02-16 04:33:21)
> > >>> Preparing a framebuffer should not require a flush. _post_plane_update()
> > >>> takes care of flushing when a flip is scheduled, this should be
> > >>> sufficient for PSR and FBC.
> > >> Makes sense.
> > >>  
> > > I also think this might speed up the flips a bit by avoiding flushes. 
> > >
> > >>> Cc: Paulo Zanoni <paulo.r.zanoni@intel.com>
> > >>> Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
> > >>> Cc: Chris Wilson <chris@chris-wilson.co.uk>
> > >>> Signed-off-by: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com>
> > >> Also
> > >> Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
> > >> to validate the flow through atomic.
> > >> -Chris
> > >>
> > Page flips used to do intel_frontbuffer_flip_prepare here, followed by intel_frontbuffer_flip_complete. I think it would make sense to change the patch to do that?
> > 
> 
> I have no context why it was removed, I'll have to understand that
> change and get back to you.

Since we supposedly have hw nuke for both fbc and psr there doesn't seem
to be much need to do anything for flips. I guess DRRS is the only
thing that kinda needs it (not really, just avoids flipping with the
slow timings). But I think DRRS should really be tied into the vblank
stuff somehow so that we switch to the fast timings whenever a vblank
interrupts are enabled.
Ville Syrjälä Feb. 28, 2018, 8:38 p.m. UTC | #6
On Wed, Feb 28, 2018 at 10:28:13PM +0200, Ville Syrjälä wrote:
> On Sat, Feb 24, 2018 at 03:24:55AM +0000, Pandiyan, Dhinakaran wrote:
> > 
> > 
> > 
> > On Mon, 2018-02-19 at 10:07 +0100, Maarten Lankhorst wrote:
> > > Op 16-02-18 om 20:27 schreef Pandiyan, Dhinakaran:
> > > > On Fri, 2018-02-16 at 08:55 +0000, Chris Wilson wrote:
> > > >> Quoting Dhinakaran Pandiyan (2018-02-16 04:33:21)
> > > >>> Preparing a framebuffer should not require a flush. _post_plane_update()
> > > >>> takes care of flushing when a flip is scheduled, this should be
> > > >>> sufficient for PSR and FBC.
> > > >> Makes sense.
> > > >>  
> > > > I also think this might speed up the flips a bit by avoiding flushes. 
> > > >
> > > >>> Cc: Paulo Zanoni <paulo.r.zanoni@intel.com>
> > > >>> Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
> > > >>> Cc: Chris Wilson <chris@chris-wilson.co.uk>
> > > >>> Signed-off-by: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com>
> > > >> Also
> > > >> Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
> > > >> to validate the flow through atomic.
> > > >> -Chris
> > > >>
> > > Page flips used to do intel_frontbuffer_flip_prepare here, followed by intel_frontbuffer_flip_complete. I think it would make sense to change the patch to do that?
> > > 
> > 
> > I have no context why it was removed, I'll have to understand that
> > change and get back to you.
> 
> Since we supposedly have hw nuke for both fbc and psr there doesn't seem
> to be much need to do anything for flips. I guess DRRS is the only
> thing that kinda needs it (not really, just avoids flipping with the
> slow timings). But I think DRRS should really be tied into the vblank
> stuff somehow so that we switch to the fast timings whenever a vblank
> interrupts are enabled.

Oh, I guess VLV/CHV PSR is what would need this. To do that properly
(ie. main link off) I think we'd basically need to do a full modeset
when exiting PSR, so it should probably handled somewhere higher up
during modeset, and for other uses the frontbuffer tracking
should perhaps just schedule a work to do the full modeset.
Dhinakaran Pandiyan Feb. 28, 2018, 11:38 p.m. UTC | #7
On Wed, 2018-02-28 at 22:38 +0200, Ville Syrjälä wrote:
> On Wed, Feb 28, 2018 at 10:28:13PM +0200, Ville Syrjälä wrote:

> > On Sat, Feb 24, 2018 at 03:24:55AM +0000, Pandiyan, Dhinakaran wrote:

> > > 

> > > 

> > > 

> > > On Mon, 2018-02-19 at 10:07 +0100, Maarten Lankhorst wrote:

> > > > Op 16-02-18 om 20:27 schreef Pandiyan, Dhinakaran:

> > > > > On Fri, 2018-02-16 at 08:55 +0000, Chris Wilson wrote:

> > > > >> Quoting Dhinakaran Pandiyan (2018-02-16 04:33:21)

> > > > >>> Preparing a framebuffer should not require a flush. _post_plane_update()

> > > > >>> takes care of flushing when a flip is scheduled, this should be

> > > > >>> sufficient for PSR and FBC.

> > > > >> Makes sense.

> > > > >>  

> > > > > I also think this might speed up the flips a bit by avoiding flushes. 

> > > > >

> > > > >>> Cc: Paulo Zanoni <paulo.r.zanoni@intel.com>

> > > > >>> Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>

> > > > >>> Cc: Chris Wilson <chris@chris-wilson.co.uk>

> > > > >>> Signed-off-by: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com>

> > > > >> Also

> > > > >> Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>

> > > > >> to validate the flow through atomic.

> > > > >> -Chris

> > > > >>

> > > > Page flips used to do intel_frontbuffer_flip_prepare here, followed by intel_frontbuffer_flip_complete. I think it would make sense to change the patch to do that?

> > > > 

> > > 

> > > I have no context why it was removed, I'll have to understand that

> > > change and get back to you.

> > 

> > Since we supposedly have hw nuke for both fbc and psr there doesn't seem

> > to be much need to do anything for flips. I guess DRRS is the only

> > thing that kinda needs it (not really, just avoids flipping with the

> > slow timings). But I think DRRS should really be tied into the vblank

> > stuff somehow so that we switch to the fast timings whenever a vblank

> > interrupts are enabled.

> 

> Oh, I guess VLV/CHV PSR is what would need this. To do that properly

> (ie. main link off) I think we'd basically need to do a full modeset

> when exiting PSR, so it should probably handled somewhere higher up

> during modeset, and for other uses the frontbuffer tracking

> should perhaps just schedule a work to do the full modeset.

> 

The mention of "full modeset" got me thinking. I believe you said full
modeset because the link needs to be trained on PSR exit if it was off.
But, link off isn't supported on VLV/CHV

else if (IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv))
	/* On VLV and CHV only standby mode is supported. */
	dev_priv->psr.link_standby = true;


So we are good here?
Ville Syrjälä March 1, 2018, 10:51 a.m. UTC | #8
On Wed, Feb 28, 2018 at 11:38:56PM +0000, Pandiyan, Dhinakaran wrote:
> 
> 
> 
> On Wed, 2018-02-28 at 22:38 +0200, Ville Syrjälä wrote:
> > On Wed, Feb 28, 2018 at 10:28:13PM +0200, Ville Syrjälä wrote:
> > > On Sat, Feb 24, 2018 at 03:24:55AM +0000, Pandiyan, Dhinakaran wrote:
> > > > 
> > > > 
> > > > 
> > > > On Mon, 2018-02-19 at 10:07 +0100, Maarten Lankhorst wrote:
> > > > > Op 16-02-18 om 20:27 schreef Pandiyan, Dhinakaran:
> > > > > > On Fri, 2018-02-16 at 08:55 +0000, Chris Wilson wrote:
> > > > > >> Quoting Dhinakaran Pandiyan (2018-02-16 04:33:21)
> > > > > >>> Preparing a framebuffer should not require a flush. _post_plane_update()
> > > > > >>> takes care of flushing when a flip is scheduled, this should be
> > > > > >>> sufficient for PSR and FBC.
> > > > > >> Makes sense.
> > > > > >>  
> > > > > > I also think this might speed up the flips a bit by avoiding flushes. 
> > > > > >
> > > > > >>> Cc: Paulo Zanoni <paulo.r.zanoni@intel.com>
> > > > > >>> Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
> > > > > >>> Cc: Chris Wilson <chris@chris-wilson.co.uk>
> > > > > >>> Signed-off-by: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com>
> > > > > >> Also
> > > > > >> Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
> > > > > >> to validate the flow through atomic.
> > > > > >> -Chris
> > > > > >>
> > > > > Page flips used to do intel_frontbuffer_flip_prepare here, followed by intel_frontbuffer_flip_complete. I think it would make sense to change the patch to do that?
> > > > > 
> > > > 
> > > > I have no context why it was removed, I'll have to understand that
> > > > change and get back to you.
> > > 
> > > Since we supposedly have hw nuke for both fbc and psr there doesn't seem
> > > to be much need to do anything for flips. I guess DRRS is the only
> > > thing that kinda needs it (not really, just avoids flipping with the
> > > slow timings). But I think DRRS should really be tied into the vblank
> > > stuff somehow so that we switch to the fast timings whenever a vblank
> > > interrupts are enabled.
> > 
> > Oh, I guess VLV/CHV PSR is what would need this. To do that properly
> > (ie. main link off) I think we'd basically need to do a full modeset
> > when exiting PSR, so it should probably handled somewhere higher up
> > during modeset, and for other uses the frontbuffer tracking
> > should perhaps just schedule a work to do the full modeset.
> > 
> The mention of "full modeset" got me thinking. I believe you said full
> modeset because the link needs to be trained on PSR exit if it was off.
> But, link off isn't supported on VLV/CHV
> 
> else if (IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv))
> 	/* On VLV and CHV only standby mode is supported. */
> 	dev_priv->psr.link_standby = true;

I think that's just because we've been lazy and done it. I think even
with the link off we'd need to reprogram all planes at least.
Ville Syrjälä March 1, 2018, 11:22 a.m. UTC | #9
On Thu, Mar 01, 2018 at 12:51:45PM +0200, Ville Syrjälä wrote:
> On Wed, Feb 28, 2018 at 11:38:56PM +0000, Pandiyan, Dhinakaran wrote:
> > 
> > 
> > 
> > On Wed, 2018-02-28 at 22:38 +0200, Ville Syrjälä wrote:
> > > On Wed, Feb 28, 2018 at 10:28:13PM +0200, Ville Syrjälä wrote:
> > > > On Sat, Feb 24, 2018 at 03:24:55AM +0000, Pandiyan, Dhinakaran wrote:
> > > > > 
> > > > > 
> > > > > 
> > > > > On Mon, 2018-02-19 at 10:07 +0100, Maarten Lankhorst wrote:
> > > > > > Op 16-02-18 om 20:27 schreef Pandiyan, Dhinakaran:
> > > > > > > On Fri, 2018-02-16 at 08:55 +0000, Chris Wilson wrote:
> > > > > > >> Quoting Dhinakaran Pandiyan (2018-02-16 04:33:21)
> > > > > > >>> Preparing a framebuffer should not require a flush. _post_plane_update()
> > > > > > >>> takes care of flushing when a flip is scheduled, this should be
> > > > > > >>> sufficient for PSR and FBC.
> > > > > > >> Makes sense.
> > > > > > >>  
> > > > > > > I also think this might speed up the flips a bit by avoiding flushes. 
> > > > > > >
> > > > > > >>> Cc: Paulo Zanoni <paulo.r.zanoni@intel.com>
> > > > > > >>> Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
> > > > > > >>> Cc: Chris Wilson <chris@chris-wilson.co.uk>
> > > > > > >>> Signed-off-by: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com>
> > > > > > >> Also
> > > > > > >> Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
> > > > > > >> to validate the flow through atomic.
> > > > > > >> -Chris
> > > > > > >>
> > > > > > Page flips used to do intel_frontbuffer_flip_prepare here, followed by intel_frontbuffer_flip_complete. I think it would make sense to change the patch to do that?
> > > > > > 
> > > > > 
> > > > > I have no context why it was removed, I'll have to understand that
> > > > > change and get back to you.
> > > > 
> > > > Since we supposedly have hw nuke for both fbc and psr there doesn't seem
> > > > to be much need to do anything for flips. I guess DRRS is the only
> > > > thing that kinda needs it (not really, just avoids flipping with the
> > > > slow timings). But I think DRRS should really be tied into the vblank
> > > > stuff somehow so that we switch to the fast timings whenever a vblank
> > > > interrupts are enabled.
> > > 
> > > Oh, I guess VLV/CHV PSR is what would need this. To do that properly
> > > (ie. main link off) I think we'd basically need to do a full modeset
> > > when exiting PSR, so it should probably handled somewhere higher up
> > > during modeset, and for other uses the frontbuffer tracking
> > > should perhaps just schedule a work to do the full modeset.
> > > 
> > The mention of "full modeset" got me thinking. I believe you said full
> > modeset because the link needs to be trained on PSR exit if it was off.
> > But, link off isn't supported on VLV/CHV
> > 
> > else if (IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv))
> > 	/* On VLV and CHV only standby mode is supported. */
> > 	dev_priv->psr.link_standby = true;
> 
> I think that's just because we've been lazy and done it. I think even
> with the link off we'd need to reprogram all planes at least.

Not had coffee yet today, and it shows. Let me rewrite that entire thing:

I think that's just because we've been lazy and not done it (link off mode).
I think even without the link off we'd need to reprogram all planes at least.
Rodrigo Vivi March 1, 2018, 6:35 p.m. UTC | #10
On Thu, Mar 01, 2018 at 01:22:50PM +0200, Ville Syrjälä wrote:
> On Thu, Mar 01, 2018 at 12:51:45PM +0200, Ville Syrjälä wrote:
> > On Wed, Feb 28, 2018 at 11:38:56PM +0000, Pandiyan, Dhinakaran wrote:
> > > 
> > > 
> > > 
> > > On Wed, 2018-02-28 at 22:38 +0200, Ville Syrjälä wrote:
> > > > On Wed, Feb 28, 2018 at 10:28:13PM +0200, Ville Syrjälä wrote:
> > > > > On Sat, Feb 24, 2018 at 03:24:55AM +0000, Pandiyan, Dhinakaran wrote:
> > > > > > 
> > > > > > 
> > > > > > 
> > > > > > On Mon, 2018-02-19 at 10:07 +0100, Maarten Lankhorst wrote:
> > > > > > > Op 16-02-18 om 20:27 schreef Pandiyan, Dhinakaran:
> > > > > > > > On Fri, 2018-02-16 at 08:55 +0000, Chris Wilson wrote:
> > > > > > > >> Quoting Dhinakaran Pandiyan (2018-02-16 04:33:21)
> > > > > > > >>> Preparing a framebuffer should not require a flush. _post_plane_update()
> > > > > > > >>> takes care of flushing when a flip is scheduled, this should be
> > > > > > > >>> sufficient for PSR and FBC.
> > > > > > > >> Makes sense.
> > > > > > > >>  
> > > > > > > > I also think this might speed up the flips a bit by avoiding flushes. 
> > > > > > > >
> > > > > > > >>> Cc: Paulo Zanoni <paulo.r.zanoni@intel.com>
> > > > > > > >>> Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
> > > > > > > >>> Cc: Chris Wilson <chris@chris-wilson.co.uk>
> > > > > > > >>> Signed-off-by: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com>
> > > > > > > >> Also
> > > > > > > >> Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
> > > > > > > >> to validate the flow through atomic.
> > > > > > > >> -Chris
> > > > > > > >>
> > > > > > > Page flips used to do intel_frontbuffer_flip_prepare here, followed by intel_frontbuffer_flip_complete. I think it would make sense to change the patch to do that?
> > > > > > > 
> > > > > > 
> > > > > > I have no context why it was removed, I'll have to understand that
> > > > > > change and get back to you.
> > > > > 
> > > > > Since we supposedly have hw nuke for both fbc and psr there doesn't seem
> > > > > to be much need to do anything for flips. I guess DRRS is the only
> > > > > thing that kinda needs it (not really, just avoids flipping with the
> > > > > slow timings). But I think DRRS should really be tied into the vblank
> > > > > stuff somehow so that we switch to the fast timings whenever a vblank
> > > > > interrupts are enabled.
> > > > 
> > > > Oh, I guess VLV/CHV PSR is what would need this. To do that properly
> > > > (ie. main link off) I think we'd basically need to do a full modeset
> > > > when exiting PSR, so it should probably handled somewhere higher up
> > > > during modeset, and for other uses the frontbuffer tracking
> > > > should perhaps just schedule a work to do the full modeset.
> > > > 
> > > The mention of "full modeset" got me thinking. I believe you said full
> > > modeset because the link needs to be trained on PSR exit if it was off.
> > > But, link off isn't supported on VLV/CHV
> > > 
> > > else if (IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv))
> > > 	/* On VLV and CHV only standby mode is supported. */
> > > 	dev_priv->psr.link_standby = true;
> > 
> > I think that's just because we've been lazy and done it. I think even
> > with the link off we'd need to reprogram all planes at least.
> 
> Not had coffee yet today, and it shows. Let me rewrite that entire thing:
> 
> I think that's just because we've been lazy and not done it (link off mode).

I agree with you here. This was probably exactly what was missing.
But, how to do this without flickering (blinking?!) the screen?

> I think even without the link off we'd need to reprogram all planes at least.

on VLV/CHV or everywhere? and why do you think that?

> 
> -- 
> Ville Syrjälä
> Intel OTC
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/intel-gfx
Ville Syrjälä March 1, 2018, 6:43 p.m. UTC | #11
On Thu, Mar 01, 2018 at 10:35:48AM -0800, Rodrigo Vivi wrote:
> On Thu, Mar 01, 2018 at 01:22:50PM +0200, Ville Syrjälä wrote:
> > On Thu, Mar 01, 2018 at 12:51:45PM +0200, Ville Syrjälä wrote:
> > > On Wed, Feb 28, 2018 at 11:38:56PM +0000, Pandiyan, Dhinakaran wrote:
> > > > 
> > > > 
> > > > 
> > > > On Wed, 2018-02-28 at 22:38 +0200, Ville Syrjälä wrote:
> > > > > On Wed, Feb 28, 2018 at 10:28:13PM +0200, Ville Syrjälä wrote:
> > > > > > On Sat, Feb 24, 2018 at 03:24:55AM +0000, Pandiyan, Dhinakaran wrote:
> > > > > > > 
> > > > > > > 
> > > > > > > 
> > > > > > > On Mon, 2018-02-19 at 10:07 +0100, Maarten Lankhorst wrote:
> > > > > > > > Op 16-02-18 om 20:27 schreef Pandiyan, Dhinakaran:
> > > > > > > > > On Fri, 2018-02-16 at 08:55 +0000, Chris Wilson wrote:
> > > > > > > > >> Quoting Dhinakaran Pandiyan (2018-02-16 04:33:21)
> > > > > > > > >>> Preparing a framebuffer should not require a flush. _post_plane_update()
> > > > > > > > >>> takes care of flushing when a flip is scheduled, this should be
> > > > > > > > >>> sufficient for PSR and FBC.
> > > > > > > > >> Makes sense.
> > > > > > > > >>  
> > > > > > > > > I also think this might speed up the flips a bit by avoiding flushes. 
> > > > > > > > >
> > > > > > > > >>> Cc: Paulo Zanoni <paulo.r.zanoni@intel.com>
> > > > > > > > >>> Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
> > > > > > > > >>> Cc: Chris Wilson <chris@chris-wilson.co.uk>
> > > > > > > > >>> Signed-off-by: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com>
> > > > > > > > >> Also
> > > > > > > > >> Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
> > > > > > > > >> to validate the flow through atomic.
> > > > > > > > >> -Chris
> > > > > > > > >>
> > > > > > > > Page flips used to do intel_frontbuffer_flip_prepare here, followed by intel_frontbuffer_flip_complete. I think it would make sense to change the patch to do that?
> > > > > > > > 
> > > > > > > 
> > > > > > > I have no context why it was removed, I'll have to understand that
> > > > > > > change and get back to you.
> > > > > > 
> > > > > > Since we supposedly have hw nuke for both fbc and psr there doesn't seem
> > > > > > to be much need to do anything for flips. I guess DRRS is the only
> > > > > > thing that kinda needs it (not really, just avoids flipping with the
> > > > > > slow timings). But I think DRRS should really be tied into the vblank
> > > > > > stuff somehow so that we switch to the fast timings whenever a vblank
> > > > > > interrupts are enabled.
> > > > > 
> > > > > Oh, I guess VLV/CHV PSR is what would need this. To do that properly
> > > > > (ie. main link off) I think we'd basically need to do a full modeset
> > > > > when exiting PSR, so it should probably handled somewhere higher up
> > > > > during modeset, and for other uses the frontbuffer tracking
> > > > > should perhaps just schedule a work to do the full modeset.
> > > > > 
> > > > The mention of "full modeset" got me thinking. I believe you said full
> > > > modeset because the link needs to be trained on PSR exit if it was off.
> > > > But, link off isn't supported on VLV/CHV
> > > > 
> > > > else if (IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv))
> > > > 	/* On VLV and CHV only standby mode is supported. */
> > > > 	dev_priv->psr.link_standby = true;
> > > 
> > > I think that's just because we've been lazy and done it. I think even
> > > with the link off we'd need to reprogram all planes at least.
> > 
> > Not had coffee yet today, and it shows. Let me rewrite that entire thing:
> > 
> > I think that's just because we've been lazy and not done it (link off mode).
> 
> I agree with you here. This was probably exactly what was missing.
> But, how to do this without flickering (blinking?!) the screen?
> 
> > I think even without the link off we'd need to reprogram all planes at least.
> 
> on VLV/CHV or everywhere? and why do you think that?

VLV/CHV. I believe the hw implements PSR by simplty turning off the
planes (and pipes+dplls for link off), but it doesn't have any automagic
stuff for recovering the original state. It's all up to the driver.

IIRC Rodrigo even confirmed this at some point, or at least he had to
trigger a plane update to get something visible on the screen.
Rodrigo Vivi March 1, 2018, 7 p.m. UTC | #12
On Thu, Mar 01, 2018 at 08:43:05PM +0200, Ville Syrjälä wrote:
> On Thu, Mar 01, 2018 at 10:35:48AM -0800, Rodrigo Vivi wrote:
> > On Thu, Mar 01, 2018 at 01:22:50PM +0200, Ville Syrjälä wrote:
> > > On Thu, Mar 01, 2018 at 12:51:45PM +0200, Ville Syrjälä wrote:
> > > > On Wed, Feb 28, 2018 at 11:38:56PM +0000, Pandiyan, Dhinakaran wrote:
> > > > > 
> > > > > 
> > > > > 
> > > > > On Wed, 2018-02-28 at 22:38 +0200, Ville Syrjälä wrote:
> > > > > > On Wed, Feb 28, 2018 at 10:28:13PM +0200, Ville Syrjälä wrote:
> > > > > > > On Sat, Feb 24, 2018 at 03:24:55AM +0000, Pandiyan, Dhinakaran wrote:
> > > > > > > > 
> > > > > > > > 
> > > > > > > > 
> > > > > > > > On Mon, 2018-02-19 at 10:07 +0100, Maarten Lankhorst wrote:
> > > > > > > > > Op 16-02-18 om 20:27 schreef Pandiyan, Dhinakaran:
> > > > > > > > > > On Fri, 2018-02-16 at 08:55 +0000, Chris Wilson wrote:
> > > > > > > > > >> Quoting Dhinakaran Pandiyan (2018-02-16 04:33:21)
> > > > > > > > > >>> Preparing a framebuffer should not require a flush. _post_plane_update()
> > > > > > > > > >>> takes care of flushing when a flip is scheduled, this should be
> > > > > > > > > >>> sufficient for PSR and FBC.
> > > > > > > > > >> Makes sense.
> > > > > > > > > >>  
> > > > > > > > > > I also think this might speed up the flips a bit by avoiding flushes. 
> > > > > > > > > >
> > > > > > > > > >>> Cc: Paulo Zanoni <paulo.r.zanoni@intel.com>
> > > > > > > > > >>> Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
> > > > > > > > > >>> Cc: Chris Wilson <chris@chris-wilson.co.uk>
> > > > > > > > > >>> Signed-off-by: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com>
> > > > > > > > > >> Also
> > > > > > > > > >> Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
> > > > > > > > > >> to validate the flow through atomic.
> > > > > > > > > >> -Chris
> > > > > > > > > >>
> > > > > > > > > Page flips used to do intel_frontbuffer_flip_prepare here, followed by intel_frontbuffer_flip_complete. I think it would make sense to change the patch to do that?
> > > > > > > > > 
> > > > > > > > 
> > > > > > > > I have no context why it was removed, I'll have to understand that
> > > > > > > > change and get back to you.
> > > > > > > 
> > > > > > > Since we supposedly have hw nuke for both fbc and psr there doesn't seem
> > > > > > > to be much need to do anything for flips. I guess DRRS is the only
> > > > > > > thing that kinda needs it (not really, just avoids flipping with the
> > > > > > > slow timings). But I think DRRS should really be tied into the vblank
> > > > > > > stuff somehow so that we switch to the fast timings whenever a vblank
> > > > > > > interrupts are enabled.
> > > > > > 
> > > > > > Oh, I guess VLV/CHV PSR is what would need this. To do that properly
> > > > > > (ie. main link off) I think we'd basically need to do a full modeset
> > > > > > when exiting PSR, so it should probably handled somewhere higher up
> > > > > > during modeset, and for other uses the frontbuffer tracking
> > > > > > should perhaps just schedule a work to do the full modeset.
> > > > > > 
> > > > > The mention of "full modeset" got me thinking. I believe you said full
> > > > > modeset because the link needs to be trained on PSR exit if it was off.
> > > > > But, link off isn't supported on VLV/CHV
> > > > > 
> > > > > else if (IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv))
> > > > > 	/* On VLV and CHV only standby mode is supported. */
> > > > > 	dev_priv->psr.link_standby = true;
> > > > 
> > > > I think that's just because we've been lazy and done it. I think even
> > > > with the link off we'd need to reprogram all planes at least.
> > > 
> > > Not had coffee yet today, and it shows. Let me rewrite that entire thing:
> > > 
> > > I think that's just because we've been lazy and not done it (link off mode).
> > 
> > I agree with you here. This was probably exactly what was missing.
> > But, how to do this without flickering (blinking?!) the screen?
> > 
> > > I think even without the link off we'd need to reprogram all planes at least.
> > 
> > on VLV/CHV or everywhere? and why do you think that?
> 
> VLV/CHV. I believe the hw implements PSR by simplty turning off the
> planes (and pipes+dplls for link off), but it doesn't have any automagic
> stuff for recovering the original state. It's all up to the driver.
> 
> IIRC Rodrigo even confirmed this at some point, or at least he had to
> trigger a plane update to get something visible on the screen.

My memory is terrible. But this makes so much sense and in sync
with some vague memory flashes here :)

And probably what blocked me for looking there besides the
other bugs on core platforms was my disbelieve that would
be possible without seeing any blink of a blank screen when
exiting PSR. :/

> 
> -- 
> Ville Syrjälä
> Intel OTC
Dhinakaran Pandiyan March 1, 2018, 7:21 p.m. UTC | #13
On Thu, 2018-03-01 at 11:00 -0800, Rodrigo Vivi wrote:
> On Thu, Mar 01, 2018 at 08:43:05PM +0200, Ville Syrjälä wrote:

> > On Thu, Mar 01, 2018 at 10:35:48AM -0800, Rodrigo Vivi wrote:

> > > On Thu, Mar 01, 2018 at 01:22:50PM +0200, Ville Syrjälä wrote:

> > > > On Thu, Mar 01, 2018 at 12:51:45PM +0200, Ville Syrjälä wrote:

> > > > > On Wed, Feb 28, 2018 at 11:38:56PM +0000, Pandiyan, Dhinakaran wrote:

> > > > > > 

> > > > > > 

> > > > > > 

> > > > > > On Wed, 2018-02-28 at 22:38 +0200, Ville Syrjälä wrote:

> > > > > > > On Wed, Feb 28, 2018 at 10:28:13PM +0200, Ville Syrjälä wrote:

> > > > > > > > On Sat, Feb 24, 2018 at 03:24:55AM +0000, Pandiyan, Dhinakaran wrote:

> > > > > > > > > 

> > > > > > > > > 

> > > > > > > > > 

> > > > > > > > > On Mon, 2018-02-19 at 10:07 +0100, Maarten Lankhorst wrote:

> > > > > > > > > > Op 16-02-18 om 20:27 schreef Pandiyan, Dhinakaran:

> > > > > > > > > > > On Fri, 2018-02-16 at 08:55 +0000, Chris Wilson wrote:

> > > > > > > > > > >> Quoting Dhinakaran Pandiyan (2018-02-16 04:33:21)

> > > > > > > > > > >>> Preparing a framebuffer should not require a flush. _post_plane_update()

> > > > > > > > > > >>> takes care of flushing when a flip is scheduled, this should be

> > > > > > > > > > >>> sufficient for PSR and FBC.

> > > > > > > > > > >> Makes sense.

> > > > > > > > > > >>  

> > > > > > > > > > > I also think this might speed up the flips a bit by avoiding flushes. 

> > > > > > > > > > >

> > > > > > > > > > >>> Cc: Paulo Zanoni <paulo.r.zanoni@intel.com>

> > > > > > > > > > >>> Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>

> > > > > > > > > > >>> Cc: Chris Wilson <chris@chris-wilson.co.uk>

> > > > > > > > > > >>> Signed-off-by: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com>

> > > > > > > > > > >> Also

> > > > > > > > > > >> Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>

> > > > > > > > > > >> to validate the flow through atomic.

> > > > > > > > > > >> -Chris

> > > > > > > > > > >>

> > > > > > > > > > Page flips used to do intel_frontbuffer_flip_prepare here, followed by intel_frontbuffer_flip_complete. I think it would make sense to change the patch to do that?

> > > > > > > > > > 

> > > > > > > > > 

> > > > > > > > > I have no context why it was removed, I'll have to understand that

> > > > > > > > > change and get back to you.

> > > > > > > > 

> > > > > > > > Since we supposedly have hw nuke for both fbc and psr there doesn't seem

> > > > > > > > to be much need to do anything for flips. I guess DRRS is the only

> > > > > > > > thing that kinda needs it (not really, just avoids flipping with the

> > > > > > > > slow timings). But I think DRRS should really be tied into the vblank

> > > > > > > > stuff somehow so that we switch to the fast timings whenever a vblank

> > > > > > > > interrupts are enabled.

> > > > > > > 

> > > > > > > Oh, I guess VLV/CHV PSR is what would need this. To do that properly

> > > > > > > (ie. main link off) I think we'd basically need to do a full modeset

> > > > > > > when exiting PSR, so it should probably handled somewhere higher up

> > > > > > > during modeset, and for other uses the frontbuffer tracking

> > > > > > > should perhaps just schedule a work to do the full modeset.

> > > > > > > 

> > > > > > The mention of "full modeset" got me thinking. I believe you said full

> > > > > > modeset because the link needs to be trained on PSR exit if it was off.

> > > > > > But, link off isn't supported on VLV/CHV

> > > > > > 

> > > > > > else if (IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv))

> > > > > > 	/* On VLV and CHV only standby mode is supported. */

> > > > > > 	dev_priv->psr.link_standby = true;

> > > > > 

> > > > > I think that's just because we've been lazy and done it. I think even

> > > > > with the link off we'd need to reprogram all planes at least.

> > > > 

> > > > Not had coffee yet today, and it shows. Let me rewrite that entire thing:

> > > > 

> > > > I think that's just because we've been lazy and not done it (link off mode).

> > > 

> > > I agree with you here. This was probably exactly what was missing.

> > > But, how to do this without flickering (blinking?!) the screen?

> > > 

> > > > I think even without the link off we'd need to reprogram all planes at least.

> > > 

> > > on VLV/CHV or everywhere? and why do you think that?

> > 

> > VLV/CHV. I believe the hw implements PSR by simplty turning off the

> > planes (and pipes+dplls for link off), but it doesn't have any automagic

> > stuff for recovering the original state. It's all up to the driver.

> > 

> > IIRC Rodrigo even confirmed this at some point, or at least he had to

> > trigger a plane update to get something visible on the screen.

> 

> My memory is terrible. But this makes so much sense and in sync

> with some vague memory flashes here :)

> 

> And probably what blocked me for looking there besides the

> other bugs on core platforms was my disbelieve that would

> be possible without seeing any blink of a blank screen when

> exiting PSR. :/

> 


We've got a couple of options here -
1) Drop this patch because it breaks VLV/CHV link standby. 

2) Keep this patch because VLV/CHV link standby is already broken (no
plane programming on exit). Follow this up with reworking PSR on
VLV/CHV.


3) Or should this be -
if (VLV() || CHV)
	intel_fb_obj_flush(obj, ORIGIN_DIRTYFB);




> > 

> > -- 

> > Ville Syrjälä

> > Intel OTC
Ville Syrjälä March 1, 2018, 7:24 p.m. UTC | #14
On Thu, Mar 01, 2018 at 11:00:40AM -0800, Rodrigo Vivi wrote:
> On Thu, Mar 01, 2018 at 08:43:05PM +0200, Ville Syrjälä wrote:
> > On Thu, Mar 01, 2018 at 10:35:48AM -0800, Rodrigo Vivi wrote:
> > > On Thu, Mar 01, 2018 at 01:22:50PM +0200, Ville Syrjälä wrote:
> > > > On Thu, Mar 01, 2018 at 12:51:45PM +0200, Ville Syrjälä wrote:
> > > > > On Wed, Feb 28, 2018 at 11:38:56PM +0000, Pandiyan, Dhinakaran wrote:
> > > > > > 
> > > > > > 
> > > > > > 
> > > > > > On Wed, 2018-02-28 at 22:38 +0200, Ville Syrjälä wrote:
> > > > > > > On Wed, Feb 28, 2018 at 10:28:13PM +0200, Ville Syrjälä wrote:
> > > > > > > > On Sat, Feb 24, 2018 at 03:24:55AM +0000, Pandiyan, Dhinakaran wrote:
> > > > > > > > > 
> > > > > > > > > 
> > > > > > > > > 
> > > > > > > > > On Mon, 2018-02-19 at 10:07 +0100, Maarten Lankhorst wrote:
> > > > > > > > > > Op 16-02-18 om 20:27 schreef Pandiyan, Dhinakaran:
> > > > > > > > > > > On Fri, 2018-02-16 at 08:55 +0000, Chris Wilson wrote:
> > > > > > > > > > >> Quoting Dhinakaran Pandiyan (2018-02-16 04:33:21)
> > > > > > > > > > >>> Preparing a framebuffer should not require a flush. _post_plane_update()
> > > > > > > > > > >>> takes care of flushing when a flip is scheduled, this should be
> > > > > > > > > > >>> sufficient for PSR and FBC.
> > > > > > > > > > >> Makes sense.
> > > > > > > > > > >>  
> > > > > > > > > > > I also think this might speed up the flips a bit by avoiding flushes. 
> > > > > > > > > > >
> > > > > > > > > > >>> Cc: Paulo Zanoni <paulo.r.zanoni@intel.com>
> > > > > > > > > > >>> Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
> > > > > > > > > > >>> Cc: Chris Wilson <chris@chris-wilson.co.uk>
> > > > > > > > > > >>> Signed-off-by: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com>
> > > > > > > > > > >> Also
> > > > > > > > > > >> Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
> > > > > > > > > > >> to validate the flow through atomic.
> > > > > > > > > > >> -Chris
> > > > > > > > > > >>
> > > > > > > > > > Page flips used to do intel_frontbuffer_flip_prepare here, followed by intel_frontbuffer_flip_complete. I think it would make sense to change the patch to do that?
> > > > > > > > > > 
> > > > > > > > > 
> > > > > > > > > I have no context why it was removed, I'll have to understand that
> > > > > > > > > change and get back to you.
> > > > > > > > 
> > > > > > > > Since we supposedly have hw nuke for both fbc and psr there doesn't seem
> > > > > > > > to be much need to do anything for flips. I guess DRRS is the only
> > > > > > > > thing that kinda needs it (not really, just avoids flipping with the
> > > > > > > > slow timings). But I think DRRS should really be tied into the vblank
> > > > > > > > stuff somehow so that we switch to the fast timings whenever a vblank
> > > > > > > > interrupts are enabled.
> > > > > > > 
> > > > > > > Oh, I guess VLV/CHV PSR is what would need this. To do that properly
> > > > > > > (ie. main link off) I think we'd basically need to do a full modeset
> > > > > > > when exiting PSR, so it should probably handled somewhere higher up
> > > > > > > during modeset, and for other uses the frontbuffer tracking
> > > > > > > should perhaps just schedule a work to do the full modeset.
> > > > > > > 
> > > > > > The mention of "full modeset" got me thinking. I believe you said full
> > > > > > modeset because the link needs to be trained on PSR exit if it was off.
> > > > > > But, link off isn't supported on VLV/CHV
> > > > > > 
> > > > > > else if (IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv))
> > > > > > 	/* On VLV and CHV only standby mode is supported. */
> > > > > > 	dev_priv->psr.link_standby = true;
> > > > > 
> > > > > I think that's just because we've been lazy and done it. I think even
> > > > > with the link off we'd need to reprogram all planes at least.
> > > > 
> > > > Not had coffee yet today, and it shows. Let me rewrite that entire thing:
> > > > 
> > > > I think that's just because we've been lazy and not done it (link off mode).
> > > 
> > > I agree with you here. This was probably exactly what was missing.
> > > But, how to do this without flickering (blinking?!) the screen?
> > > 
> > > > I think even without the link off we'd need to reprogram all planes at least.
> > > 
> > > on VLV/CHV or everywhere? and why do you think that?
> > 
> > VLV/CHV. I believe the hw implements PSR by simplty turning off the
> > planes (and pipes+dplls for link off), but it doesn't have any automagic
> > stuff for recovering the original state. It's all up to the driver.
> > 
> > IIRC Rodrigo even confirmed this at some point, or at least he had to
> > trigger a plane update to get something visible on the screen.
> 
> My memory is terrible. But this makes so much sense and in sync
> with some vague memory flashes here :)
> 
> And probably what blocked me for looking there besides the
> other bugs on core platforms was my disbelieve that would
> be possible without seeing any blink of a blank screen when
> exiting PSR. :/

I suppose we should start the pipe/planes back up, and only then we can
tell the sink to stop using the old stored frame.
diff mbox

Patch

diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index 24ca43424c44..c611855bf05a 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -12717,12 +12717,10 @@  intel_prepare_plane_fb(struct drm_plane *plane,
 		struct i915_vma *vma;
 
 		vma = intel_pin_and_fence_fb_obj(fb, new_state->rotation);
-		if (!IS_ERR(vma)) {
+		if (!IS_ERR(vma))
 			to_intel_plane_state(new_state)->vma = vma;
-			intel_fb_obj_flush(obj, ORIGIN_DIRTYFB);
-		} else {
+		else
 			ret =  PTR_ERR(vma);
-		}
 	}
 
 	i915_gem_object_wait_priority(obj, 0, I915_PRIORITY_DISPLAY);