Message ID | 1439381302-26183-1-git-send-email-chris@chris-wilson.co.uk (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
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
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
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 --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;
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(+)