Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 842315ee authored by Maarten Lankhorst's avatar Maarten Lankhorst Committed by Daniel Vetter
Browse files

drm/i915: Handle return value in intel_pin_and_fence_fb_obj, v2.



-EDEADLK has special meaning in atomic, but get_fence may call
i915_find_fence_reg which can return -EDEADLK.

This has special meaning in the atomic world, so convert the error
to -EBUSY for this case.

Changes since v1:
- Add comment in the code.

Signed-off-by: default avatarMaarten Lankhorst <maarten.lankhorst@linux.intel.com>
Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
parent 4740b0f2
Loading
Loading
Loading
Loading
+12 −1
Original line number Diff line number Diff line
@@ -2397,7 +2397,18 @@ intel_pin_and_fence_fb_obj(struct drm_plane *plane,
	 * a fence as the cost is not that onerous.
	 */
	ret = i915_gem_object_get_fence(obj);
	if (ret)
	if (ret == -EDEADLK) {
		/*
		 * -EDEADLK means there are no free fences
		 * no pending flips.
		 *
		 * This is propagated to atomic, but it uses
		 * -EDEADLK to force a locking recovery, so
		 * change the returned error to -EBUSY.
		 */
		ret = -EBUSY;
		goto err_unpin;
	} else if (ret)
		goto err_unpin;

	i915_gem_object_pin_fence(obj);