While not good behaviour, it is, however, established behaviour that we
can punt EAGAIN to userspace if we need to retry the ioctl. When trying
to acquire a mutex, prefer to use EAGAIN to propagate losing the race
so that if it does end up back in userspace, we try again.
Fixes: c81471f5e95c ("drm/i915: Copy across scheduler behaviour flags across submit fences")
Closes: https://gitlab.freedesktop.org/drm/intel/issues/800
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Reviewed-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20191213160347.1789004-1-chris@chris-wilson.co.uk
GEM_BUG_ON(rcu_access_pointer(to->timeline) == tl);
- err = -EBUSY;
+ err = -EAGAIN;
if (mutex_trylock(&tl->mutex)) {
struct intel_timeline_cacheline *cl = from->hwsp_cacheline;
if (!tl) /* already started or maybe even completed */
return 0;
- fence = ERR_PTR(-EBUSY);
+ fence = ERR_PTR(-EAGAIN);
if (mutex_trylock(&tl->mutex)) {
fence = NULL;
if (!i915_request_started(signal) &&