Op 29-11-17 om 12:04 schreef Lucas Stach: > drm_atomic_helper_setup_commit expects that flipping of previous commits > has happened when it is called to set up a new commit. This can be violated > by commits where userspace doesn't get a flip completion event to > synchronize against i.e. legacy modesets and property changes. > > The expectation is that those are done by blocking commits, which wait for > completion. Most drivers call drm_atomic_helper_wait_for_vblanks in the > commit_tail to ensure completion, but the wait for next vblank might not > actually happen if the commit didn't change any planes. > > Make the wait more agressive by also waiting if no planes changed. This > is the minimal regression fix for the 4.15 kernel series. Long term > drivers should switch away from drm_atomic_helper_wait_for_vblanks and > use drm_atomic_helper_wait_for_flip_done instead. > > Signed-off-by: Lucas Stach <l.stach@xxxxxxxxxxxxxx> > --- > drivers/gpu/drm/drm_atomic_helper.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/drm_atomic_helper.c b/drivers/gpu/drm/drm_atomic_helper.c > index 71d712f1b56a..b16f1d69a0bb 100644 > --- a/drivers/gpu/drm/drm_atomic_helper.c > +++ b/drivers/gpu/drm/drm_atomic_helper.c > @@ -1225,7 +1225,7 @@ drm_atomic_helper_wait_for_vblanks(struct drm_device *dev, > return; > > for_each_oldnew_crtc_in_state(old_state, crtc, old_crtc_state, new_crtc_state, i) { > - if (!new_crtc_state->active || !new_crtc_state->planes_changed) > + if (!new_crtc_state->active) > continue; > > ret = drm_crtc_vblank_get(crtc); Added a fixes tag because it likely started regressing with commit de39bec1a0c4 ("drm/atomic: Remove waits in drm_atomic_helper_commit_cleanup_done, v2.") Thanks for patch, pushed. ~Maarten _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel