Op 14-06-17 om 16:52 schreef Ville Syrjälä: > On Wed, Jun 14, 2017 at 11:08:41AM +0200, Maarten Lankhorst wrote: >> Moving the wait to a helper allows callers outside of the core to >> wait for pending updates to complete. >> >> This can be used to prevent races against nonblocking modesets. >> Only the hw_done call in swap_state is moved to a helper, doing >> it for the other callers requires too many changes and I think this >> is the only useful one to export. >> >> Signed-off-by: Maarten Lankhorst <maarten.lankhorst@xxxxxxxxxxxxxxx> >> --- >> drivers/gpu/drm/drm_atomic_helper.c | 51 +++++++++++++++++++++++++++---------- >> include/drm/drm_atomic_helper.h | 1 + >> 2 files changed, 38 insertions(+), 14 deletions(-) >> >> diff --git a/drivers/gpu/drm/drm_atomic_helper.c b/drivers/gpu/drm/drm_atomic_helper.c >> index 86d3093c6c9b..1b068ce1aea9 100644 >> --- a/drivers/gpu/drm/drm_atomic_helper.c >> +++ b/drivers/gpu/drm/drm_atomic_helper.c >> @@ -2067,6 +2067,41 @@ void drm_atomic_helper_cleanup_planes(struct drm_device *dev, >> EXPORT_SYMBOL(drm_atomic_helper_cleanup_planes); >> >> /** >> + * drm_atomic_helper_wait_for_hw_done - wait for all previous hw updates to complete. >> + * @crtc: crtc to wait on. >> + * >> + * This function waits for all previous hardware updates queued on @crtc >> + * to complete. >> + * >> + * Returns: >> + * 0 on success, negative error code on failure. >> + */ >> +int drm_atomic_helper_wait_for_hw_done(struct drm_crtc *crtc) >> +{ >> + struct drm_crtc_commit *commit; >> + long ret; >> + >> + spin_lock(&crtc->commit_lock); >> + commit = list_first_entry_or_null(&crtc->commit_list, >> + struct drm_crtc_commit, commit_entry); >> + if (commit) >> + drm_crtc_commit_get(commit); >> + spin_unlock(&crtc->commit_lock); >> + >> + if (!commit) >> + return 0; >> + >> + ret = wait_for_completion_timeout(&commit->hw_done, 10 * HZ); >> + drm_crtc_commit_put(commit); >> + >> + if (ret == 0) >> + return -EBUSY; > -ETIMEDOUT ? ETIMEDOUT -> /* Connection timed out */ No I don't think that would match. _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel