On Wed, Jun 28, 2017 at 03:28:12PM +0200, Maarten Lankhorst wrote: > Without waiting for hw_done, previous atomic updates may dereference > the wrong state and cause a lot of confusion. The real fix is fixing > all obj->state to use the accessor macros, but for now wait > indefinitely and interruptibly. > > Cc: Boris Brezillon <boris.brezil...@free-electrons.com> > Cc: David Airlie <airl...@linux.ie> > Cc: Daniel Vetter <daniel.vet...@intel.com> > Cc: Jani Nikula <jani.nik...@linux.intel.com> > Cc: Sean Paul <seanp...@chromium.org> > Cc: CK Hu <ck...@mediatek.com> > Cc: Philipp Zabel <p.za...@pengutronix.de> > Cc: Matthias Brugger <matthias....@gmail.com> > Cc: Rob Clark <robdcl...@gmail.com> > Cc: Ben Skeggs <bske...@redhat.com> > Cc: Thierry Reding <thierry.red...@gmail.com> > Cc: Jonathan Hunter <jonath...@nvidia.com> > Cc: Jyri Sarha <jsa...@ti.com> > Cc: Tomi Valkeinen <tomi.valkei...@ti.com> > Cc: Eric Anholt <e...@anholt.net> > Cc: dri-devel@lists.freedesktop.org > Cc: linux-ker...@vger.kernel.org > Cc: intel-...@lists.freedesktop.org > Cc: linux-arm-ker...@lists.infradead.org > Cc: linux-media...@lists.infradead.org > Cc: linux-arm-...@vger.kernel.org > Cc: freedr...@lists.freedesktop.org > Cc: nouv...@lists.freedesktop.org > Cc: linux-te...@vger.kernel.org > Signed-off-by: Maarten Lankhorst <maarten.lankho...@linux.intel.com> > --- > drivers/gpu/drm/drm_atomic_helper.c | 12 +++++------- > 1 file changed, 5 insertions(+), 7 deletions(-) > > diff --git a/drivers/gpu/drm/drm_atomic_helper.c > b/drivers/gpu/drm/drm_atomic_helper.c > index f66b6c45cdd0..56e7729d993d 100644 > --- a/drivers/gpu/drm/drm_atomic_helper.c > +++ b/drivers/gpu/drm/drm_atomic_helper.c > @@ -2144,8 +2144,7 @@ EXPORT_SYMBOL(drm_atomic_helper_cleanup_planes); > int drm_atomic_helper_swap_state(struct drm_atomic_state *state, > bool stall)
Needs improved kernel-doc: * Returns: * * 0 on success. Can return -EINTR when @stall is true and the waiting for * the previous commits has been interrupted. With that Reviewed-by: Daniel Vetter <daniel.vet...@ffwll.ch> > { > - int i; > - long ret; > + int i, ret; > struct drm_connector *connector; > struct drm_connector_state *old_conn_state, *new_conn_state; > struct drm_crtc *crtc; > @@ -2168,12 +2167,11 @@ int drm_atomic_helper_swap_state(struct > drm_atomic_state *state, > if (!commit) > continue; > > - ret = wait_for_completion_timeout(&commit->hw_done, > - 10*HZ); > - if (ret == 0) > - DRM_ERROR("[CRTC:%d:%s] hw_done timed out\n", > - crtc->base.id, crtc->name); > + ret = > wait_for_completion_interruptible(&commit->hw_done); > drm_crtc_commit_put(commit); > + > + if (ret) > + return ret; > } > } > > -- > 2.11.0 > > _______________________________________________ > dri-devel mailing list > dri-devel@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/dri-devel -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch _______________________________________________ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel