I used these additional fields to track down the issue I saw on HSW. References: https://bugs.freedesktop.org/show_bug.cgi?id=91579 Signed-off-by: Jesse Barnes <jbarnes@xxxxxxxxxxxxxxxx> --- drivers/gpu/drm/i915/intel_drv.h | 2 ++ drivers/gpu/drm/i915/intel_sprite.c | 16 ++++++++++++---- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h index 46484e4..90cad50 100644 --- a/drivers/gpu/drm/i915/intel_drv.h +++ b/drivers/gpu/drm/i915/intel_drv.h @@ -565,6 +565,8 @@ struct intel_crtc { unsigned start_vbl_count; ktime_t start_vbl_time; + int min_vbl, max_vbl; + int scanline_start; struct intel_crtc_atomic_commit atomic; diff --git a/drivers/gpu/drm/i915/intel_sprite.c b/drivers/gpu/drm/i915/intel_sprite.c index 0c2c62f..ff8c9d5 100644 --- a/drivers/gpu/drm/i915/intel_sprite.c +++ b/drivers/gpu/drm/i915/intel_sprite.c @@ -94,6 +94,9 @@ void intel_pipe_update_start(struct intel_crtc *crtc) min = vblank_start - usecs_to_scanlines(mode, 100); max = vblank_start - 1; + crtc->min_vbl = min; + crtc->max_vbl = max; + local_irq_disable(); crtc->start_vbl_count = 0; @@ -122,8 +125,10 @@ void intel_pipe_update_start(struct intel_crtc *crtc) * scanline_offset used to correct the DSL readout.) */ scanline = intel_get_crtc_scanline(crtc); - if (scanline > 2 && (scanline < min || scanline > max)) + if (scanline > 2 && (scanline < min || scanline > max)) { + crtc->scanline_start = scanline; break; + } if (timeout <= 0) { DRM_ERROR("Potential atomic update failure on pipe %c\n", @@ -169,10 +174,13 @@ void intel_pipe_update_end(struct intel_crtc *crtc) local_irq_enable(); - if (crtc->start_vbl_count && crtc->start_vbl_count != end_vbl_count) - DRM_ERROR("Atomic update failure on pipe %c (start=%u end=%u) time %lld us\n", + if (crtc->start_vbl_count && crtc->start_vbl_count != end_vbl_count) { + DRM_ERROR("Atomic update failure on pipe %c (start=%u end=%u) time %lld us, min %d, max %d, scanline start %d, end %d\n", pipe_name(pipe), crtc->start_vbl_count, end_vbl_count, - ktime_us_delta(end_vbl_time, crtc->start_vbl_time)); + ktime_us_delta(end_vbl_time, crtc->start_vbl_time), + crtc->min_vbl, crtc->max_vbl, crtc->scanline_start, + intel_get_crtc_scanline(crtc)); + } } static void -- 1.9.1 _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/intel-gfx