[Intel-gfx] [PATCH 18/23] drm/i915: Dirty hack to fix selftests locking inversion

Tvrtko Ursulin tvrtko.ursulin at linux.intel.com
Fri Jul 3 13:48:22 UTC 2020


On 03/07/2020 13:22, Maarten Lankhorst wrote:
> 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.

Mentions and existence of "dirty hacks" will hopefully be removed from 
the series before it can be considered merge ready?

Regards,

Tvrtko

> Signed-off-by: Maarten Lankhorst <maarten.lankhorst at linux.intel.com>
> ---
>   drivers/gpu/drm/i915/gt/intel_context.c | 12 ++++++++++++
>   1 file changed, 12 insertions(+)
> 
> diff --git a/drivers/gpu/drm/i915/gt/intel_context.c b/drivers/gpu/drm/i915/gt/intel_context.c
> index 64948386630f..fe9fff5a63b1 100644
> --- a/drivers/gpu/drm/i915/gt/intel_context.c
> +++ b/drivers/gpu/drm/i915/gt/intel_context.c
> @@ -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;
>   }
>   
> 


More information about the Intel-gfx mailing list