Some i915 selftests still use i915_vma_lock() as inner lock, and
intel_context_create_request() intel_timeline->mutex as outer lock.
Fortunately for selftests this is not an issue, they should be fixed
but we can move ahead and cleanify lockdep now.
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Reviewed-by: Thomas Hellström <thomas.hellstrom@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20200819140904.1708856-19-maarten.lankhorst@linux.intel.com
Signed-off-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
        rq = i915_request_create(ce);
        intel_context_unpin(ce);
 
+       if (IS_ERR(rq))
+               return rq;
+
+       /*
+        * timeline->mutex should be the inner lock, but is used as outer lock.
+        * Hack around this to shut up lockdep in selftests..
+        */
+       lockdep_unpin_lock(&ce->timeline->mutex, rq->cookie);
+       mutex_release(&ce->timeline->mutex.dep_map, _RET_IP_);
+       mutex_acquire(&ce->timeline->mutex.dep_map, SINGLE_DEPTH_NESTING, 0, _RET_IP_);
+       rq->cookie = lockdep_pin_lock(&ce->timeline->mutex);
+
        return rq;
 }