drm/i915: Dirty hack to fix selftests locking inversion
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>
This commit is contained in:
parent
f00ecc2ef5
commit
dd878c0cec
@ -459,6 +459,18 @@ struct i915_request *intel_context_create_request(struct intel_context *ce)
|
||||
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;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user