drm/atomic: Make atomic helper track newly assigned planes correctly, v2.
authorMaarten Lankhorst <[email protected]>
Tue, 17 Oct 2017 05:20:47 +0000 (07:20 +0200)
committerMaarten Lankhorst <[email protected]>
Tue, 17 Oct 2017 12:18:14 +0000 (14:18 +0200)
Commit 669c9215afea ("drm/atomic: Make async plane update checks work as
intended, v2.") forced planes to always be tracked, but forgot to
explicitly get the crtc commit from the new crtc when available.

This broke plane commit tracking, and caused kms_atomic_transitions
to randomly fail with -EBUSY.

Changes since v1:
- Prefer new_crtc_state->crtc above old_crtc_state->crtc.

Signed-off-by: Maarten Lankhorst <[email protected]>
Fixes: 669c9215afea ("drm/atomic: Make async plane update checks work as intended, v2.")
Cc: Gustavo Padovan <[email protected]>
Cc: Daniel Vetter <[email protected]>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=102671
Testcase: kms_atomic_transitions
Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
Reviewed-by: Daniel Vetter <[email protected]>
drivers/gpu/drm/drm_atomic_helper.c

index b83bd462868cd3aca69c0e7bbc7a727a785ac0b8..aec73f4c70c603270c8d1127c31403569fa7a1ef 100644 (file)
@@ -1801,7 +1801,7 @@ int drm_atomic_helper_setup_commit(struct drm_atomic_state *state,
                    !try_wait_for_completion(&old_plane_state->commit->flip_done))
                        return -EBUSY;
 
-               commit = crtc_or_fake_commit(state, old_plane_state->crtc);
+               commit = crtc_or_fake_commit(state, new_plane_state->crtc ?: old_plane_state->crtc);
                if (!commit)
                        return -ENOMEM;