On Tue, 2015-07-21 at 16:09 +0200, Maarten Lankhorst wrote: > -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. Doesn't this change the behavior of intel_crtc_page_flip() slightly? It now would return -EBUSY to user space if it can't find a fence instead of -EDEADLK. Not sure if that is a problem though. I don't expect user space would actually check for -EDEADLK. Ander > Changes since v1: > - Add comment in the code. > > Signed-off-by: Maarten Lankhorst <maarten.lankhorst@xxxxxxxxxxxxxxx> > --- > Like this? > > diff --git a/drivers/gpu/drm/i915/intel_display.c > b/drivers/gpu/drm/i915/intel_display.c > index af0bcfee4771..11387f5ed681 100644 > --- a/drivers/gpu/drm/i915/intel_display.c > +++ b/drivers/gpu/drm/i915/intel_display.c > @@ -2395,8 +2395,20 @@ 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) { > + if (ret == -EDEADLK) { > + /* > + * -EDEADLK means there are no free fences > + * and 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; > + } > > i915_gem_object_pin_fence(obj); > > > _______________________________________________ > Intel-gfx mailing list > Intel-gfx@xxxxxxxxxxxxxxxxxxxxx > http://lists.freedesktop.org/mailman/listinfo/intel-gfx _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/intel-gfx