All of lore.kernel.org
 help / color / mirror / Atom feed
From: Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com>
To: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
	intel-gfx@lists.freedesktop.org
Subject: Re: [Intel-gfx] [PATCH 18/23] drm/i915: Dirty hack to fix selftests locking inversion
Date: Tue, 7 Jul 2020 11:56:14 +0100	[thread overview]
Message-ID: <c87f02f9-ed7c-34c9-4fcf-06b7e17780e3@linux.intel.com> (raw)
In-Reply-To: <1ba4f588-fb98-289a-4a1b-edd6f10e0ad1@linux.intel.com>


On 07/07/2020 11:19, Maarten Lankhorst wrote:
> Op 03-07-2020 om 15:48 schreef Tvrtko Ursulin:
>>
>> 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@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;
>>>    }
>>>   
> 
> Hey,
> 
> We're trying to invert the locking order with vma lock vs request lock, while this is a hack,
> it will not affect normal running code, it's only meant to shut up lockdep in the selftests.
> 
> This is mainly so we can fix the selftests one by one, without breaking the world. Ideally
> when mm.obj lands, we already corrected the lock ordering. We may keep this macro for selftests,
> but until lock reordering in selftests is complete we will need this temporarily.

Is there a relationship between obj->mm.lock and this particular lock 
inversion? I don't see it. It will become critical to have selftests 
adjusted to proper locking order for every which will/can trigger 
eviction. But okay,if you want to stage the pieces perhaps it is acceptable.

As previous patch in the series removes intel_context_create_request 
usages outside selftests I suggest you mention this in this commit 
message, as part of justification why it is safe.

Also it would be good to wrap intel_context_create_request in a selftest 
#ifdef so that accidental usage is prevented in the inter-rim stages of 
refactoring.

Regards,

Tvrtko
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

  reply	other threads:[~2020-07-07 10:56 UTC|newest]

Thread overview: 43+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-07-03 12:21 [Intel-gfx] [PATCH 00/23] drm/i915: Use ww locking in execbuf submission Maarten Lankhorst
2020-07-03 12:21 ` [Intel-gfx] [PATCH 01/23] Revert "drm/i915/gem: Async GPU relocations only" Maarten Lankhorst
2020-07-03 12:22 ` [Intel-gfx] [PATCH 02/23] drm/i915: Revert relocation chaining commits Maarten Lankhorst
2020-07-03 12:22 ` [Intel-gfx] [PATCH 03/23] Revert "drm/i915/gem: Drop relocation slowpath" Maarten Lankhorst
2020-07-03 12:22 ` [Intel-gfx] [PATCH 04/23] drm/i915: Add an implementation for i915_gem_ww_ctx locking, v2 Maarten Lankhorst
2020-07-03 13:45   ` Tvrtko Ursulin
2020-07-03 12:22 ` [Intel-gfx] [PATCH 05/23] drm/i915: Remove locking from i915_gem_object_prepare_read/write Maarten Lankhorst
2020-07-03 13:43   ` Tvrtko Ursulin
2020-07-06 12:53     ` Maarten Lankhorst
2020-07-03 12:22 ` [Intel-gfx] [PATCH 06/23] drm/i915: Parse command buffer earlier in eb_relocate(slow) Maarten Lankhorst
2020-07-03 13:49   ` Tvrtko Ursulin
2020-07-06 12:53     ` Maarten Lankhorst
2020-07-06 15:47       ` Tvrtko Ursulin
2020-07-03 12:22 ` [Intel-gfx] [PATCH 07/23] Revert "drm/i915/gem: Split eb_vma into its own allocation" Maarten Lankhorst
2020-07-03 12:22 ` [Intel-gfx] [PATCH 08/23] drm/i915: Use per object locking in execbuf, v12 Maarten Lankhorst
2020-07-03 12:22 ` [Intel-gfx] [PATCH 09/23] drm/i915: Use ww locking in intel_renderstate Maarten Lankhorst
2020-07-03 12:22 ` [Intel-gfx] [PATCH 10/23] drm/i915: Add ww context handling to context_barrier_task Maarten Lankhorst
2020-07-03 12:22 ` [Intel-gfx] [PATCH 11/23] drm/i915: Nuke arguments to eb_pin_engine Maarten Lankhorst
2020-07-03 13:38   ` Tvrtko Ursulin
2020-07-03 12:22 ` [Intel-gfx] [PATCH 12/23] drm/i915: Pin engine before pinning all objects, v4 Maarten Lankhorst
2020-07-03 12:22 ` [Intel-gfx] [PATCH 13/23] drm/i915: Rework intel_context pinning to do everything outside of pin_mutex Maarten Lankhorst
2020-07-03 12:22 ` [Intel-gfx] [PATCH 14/23] drm/i915: Make sure execbuffer always passes ww state to i915_vma_pin Maarten Lankhorst
2020-07-03 12:22 ` [Intel-gfx] [PATCH 15/23] drm/i915: Convert i915_gem_object/client_blt.c to use ww locking as well, v2 Maarten Lankhorst
2020-07-07 14:32   ` Dan Carpenter
2020-07-07 14:32     ` Dan Carpenter
2020-07-03 12:22 ` [Intel-gfx] [PATCH 16/23] drm/i915: Kill last user of intel_context_create_request outside of selftests Maarten Lankhorst
2020-07-03 12:22 ` [Intel-gfx] [PATCH 17/23] drm/i915: Convert i915_perf to ww locking as well Maarten Lankhorst
2020-07-03 12:22 ` [Intel-gfx] [PATCH 18/23] drm/i915: Dirty hack to fix selftests locking inversion Maarten Lankhorst
2020-07-03 13:48   ` Tvrtko Ursulin
2020-07-07 10:19     ` Maarten Lankhorst
2020-07-07 10:56       ` Tvrtko Ursulin [this message]
2020-07-07 11:00         ` Maarten Lankhorst
2020-07-03 12:22 ` [Intel-gfx] [PATCH 19/23] drm/i915/selftests: Fix locking inversion in lrc selftest Maarten Lankhorst
2020-07-03 12:22 ` [Intel-gfx] [PATCH 20/23] drm/i915: Use ww pinning for intel_context_create_request() Maarten Lankhorst
2020-07-07 14:35   ` Dan Carpenter
2020-07-07 14:35     ` Dan Carpenter
2020-07-03 12:22 ` [Intel-gfx] [PATCH 21/23] drm/i915: Move i915_vma_lock in the selftests to avoid lock inversion, v2 Maarten Lankhorst
2020-07-03 12:22 ` [Intel-gfx] [PATCH 22/23] drm/i915: Add ww locking to vm_fault_gtt Maarten Lankhorst
2020-07-03 12:22 ` [Intel-gfx] [PATCH 23/23] drm/i915: Add ww locking to pin_to_display_plane Maarten Lankhorst
2020-07-03 14:12 ` [Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for drm/i915: Use ww locking in execbuf submission Patchwork
2020-07-03 14:13 ` [Intel-gfx] ✗ Fi.CI.SPARSE: " Patchwork
2020-07-03 14:36 ` [Intel-gfx] ✗ Fi.CI.BAT: failure " Patchwork
2020-07-14 11:44 [Intel-gfx] [PATCH 01/23] Revert "drm/i915/gem: Async GPU relocations only" Maarten Lankhorst
2020-07-14 11:45 ` [Intel-gfx] [PATCH 18/23] drm/i915: Dirty hack to fix selftests locking inversion Maarten Lankhorst

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=c87f02f9-ed7c-34c9-4fcf-06b7e17780e3@linux.intel.com \
    --to=tvrtko.ursulin@linux.intel.com \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=maarten.lankhorst@linux.intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.