Эх сурвалжийг харах

drm/msm/atomic: fix issue with gnome-shell wayland

The gnome-shell wayland compositor triggers a setcrtc with an fb that is
still being rendered, triggering the call to _wait_fence_interruptable().
But a NULL timeout means "don't wait, return -EBUSY if not ready", which
in turn causes the setcrtc to fail.

Signed-off-by: Rob Clark <robdclark@gmail.com>
Rob Clark 10 жил өмнө
parent
commit
be7a7b8997

+ 4 - 1
drivers/gpu/drm/msm/msm_atomic.c

@@ -178,6 +178,7 @@ int msm_atomic_commit(struct drm_device *dev,
 {
 {
 	int nplanes = dev->mode_config.num_total_plane;
 	int nplanes = dev->mode_config.num_total_plane;
 	int ncrtcs = dev->mode_config.num_crtc;
 	int ncrtcs = dev->mode_config.num_crtc;
+	struct timespec timeout;
 	struct msm_commit *c;
 	struct msm_commit *c;
 	int i, ret;
 	int i, ret;
 
 
@@ -250,7 +251,9 @@ int msm_atomic_commit(struct drm_device *dev,
 		return 0;
 		return 0;
 	}
 	}
 
 
-	ret = msm_wait_fence_interruptable(dev, c->fence, NULL);
+	jiffies_to_timespec(jiffies + msecs_to_jiffies(1000), &timeout);
+
+	ret = msm_wait_fence_interruptable(dev, c->fence, &timeout);
 	if (ret) {
 	if (ret) {
 		WARN_ON(ret);  // TODO unswap state back?  or??
 		WARN_ON(ret);  // TODO unswap state back?  or??
 		commit_destroy(c);
 		commit_destroy(c);