diff mbox

drm/i915: Do not check or a stalled pageflip prior to it being queued

Message ID 1439381302-26183-1-git-send-email-chris@chris-wilson.co.uk (mailing list archive)
State New, archived
Headers show

Commit Message

Chris Wilson Aug. 12, 2015, 12:08 p.m. UTC
When we queue the command or operation to change the scanout address, we
mark the flip as in progress. We can use this flag to prevent us from
checking for a stalled flip prior to its existence!

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
---
 drivers/gpu/drm/i915/intel_display.c | 3 +++
 1 file changed, 3 insertions(+)

Comments

Ville Syrjälä Aug. 12, 2015, 1:54 p.m. UTC | #1
On Wed, Aug 12, 2015 at 01:08:22PM +0100, Chris Wilson wrote:
> When we queue the command or operation to change the scanout address, we
> mark the flip as in progress. We can use this flag to prevent us from
> checking for a stalled flip prior to its existence!
> 
> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
> ---
>  drivers/gpu/drm/i915/intel_display.c | 3 +++
>  1 file changed, 3 insertions(+)
> 
> diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
> index aab8dfd1f8a5..edc7d4a7c9de 100644
> --- a/drivers/gpu/drm/i915/intel_display.c
> +++ b/drivers/gpu/drm/i915/intel_display.c
> @@ -11248,6 +11248,9 @@ static bool __intel_pageflip_stall_check(struct drm_device *dev,
>  	if (atomic_read(&work->pending) >= INTEL_FLIP_COMPLETE)
>  		return true;
>  
> +	if (atomic_read(&work->pending) < INTEL_FLIP_PENDING)
> +		return false;
> +

unpin_work is assigned and the lock dropped before the flip is marked as
INTEL_FLIP_PENDING. Makes sense.

Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>

>  	if (!work->enable_stall_check)
>  		return false;
>  
> -- 
> 2.5.0
> 
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx
Daniel Vetter Aug. 12, 2015, 2:39 p.m. UTC | #2
On Wed, Aug 12, 2015 at 04:54:09PM +0300, Ville Syrjälä wrote:
> On Wed, Aug 12, 2015 at 01:08:22PM +0100, Chris Wilson wrote:
> > When we queue the command or operation to change the scanout address, we
> > mark the flip as in progress. We can use this flag to prevent us from
> > checking for a stalled flip prior to its existence!
> > 
> > Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
> > ---
> >  drivers/gpu/drm/i915/intel_display.c | 3 +++
> >  1 file changed, 3 insertions(+)
> > 
> > diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
> > index aab8dfd1f8a5..edc7d4a7c9de 100644
> > --- a/drivers/gpu/drm/i915/intel_display.c
> > +++ b/drivers/gpu/drm/i915/intel_display.c
> > @@ -11248,6 +11248,9 @@ static bool __intel_pageflip_stall_check(struct drm_device *dev,
> >  	if (atomic_read(&work->pending) >= INTEL_FLIP_COMPLETE)
> >  		return true;
> >  
> > +	if (atomic_read(&work->pending) < INTEL_FLIP_PENDING)
> > +		return false;
> > +
> 
> unpin_work is assigned and the lock dropped before the flip is marked as
> INTEL_FLIP_PENDING. Makes sense.
> 
> Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>

Queued for -next, thanks for the patch.
-Daniel

> 
> >  	if (!work->enable_stall_check)
> >  		return false;
> >  
> > -- 
> > 2.5.0
> > 
> > _______________________________________________
> > Intel-gfx mailing list
> > Intel-gfx@lists.freedesktop.org
> > http://lists.freedesktop.org/mailman/listinfo/intel-gfx
> 
> -- 
> Ville Syrjälä
> Intel OTC
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx
Shuang He Aug. 15, 2015, 8:45 a.m. UTC | #3
Tested-By: Intel Graphics QA PRTS (Patch Regression Test System Contact: shuang.he@intel.com)
Task id: 7156
-------------------------------------Summary-------------------------------------
Platform          Delta          drm-intel-nightly          Series Applied
ILK                 -1              302/302              301/302
SNB                                  315/315              315/315
IVB                                  336/336              336/336
BYT                 -2              283/283              281/283
HSW                                  378/378              378/378
-------------------------------------Detailed-------------------------------------
Platform  Test                                drm-intel-nightly          Series Applied
*ILK  igt@kms_flip@wf_vblank-vs-modeset-interruptible      PASS(1)      DMESG_WARN(1)
*BYT  igt@gem_partial_pwrite_pread@reads-uncached      PASS(1)      FAIL(1)
*BYT  igt@gem_tiled_partial_pwrite_pread@reads      PASS(1)      FAIL(1)
Note: You need to pay more attention to line start with '*'
diff mbox

Patch

diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index aab8dfd1f8a5..edc7d4a7c9de 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -11248,6 +11248,9 @@  static bool __intel_pageflip_stall_check(struct drm_device *dev,
 	if (atomic_read(&work->pending) >= INTEL_FLIP_COMPLETE)
 		return true;
 
+	if (atomic_read(&work->pending) < INTEL_FLIP_PENDING)
+		return false;
+
 	if (!work->enable_stall_check)
 		return false;