[Intel-gfx] [PATCH 2/2] drm/i915: Remove requirement for holding i915_request.lock for breadcrumbs

Tvrtko Ursulin tvrtko.ursulin at linux.intel.com
Thu Jul 16 10:11:55 UTC 2020



On 16/07/2020 10:16, Chris Wilson wrote:
> Quoting Tvrtko Ursulin (2020-07-16 10:01:15)
>>
>> On 14/07/2020 10:47, Chris Wilson wrote:
>>> diff --git a/drivers/gpu/drm/i915/gt/intel_lrc.c b/drivers/gpu/drm/i915/gt/intel_lrc.c
>>> index e0280a672f1d..aa7be7f05f8c 100644
>>> --- a/drivers/gpu/drm/i915/gt/intel_lrc.c
>>> +++ b/drivers/gpu/drm/i915/gt/intel_lrc.c
>>> @@ -1148,20 +1148,6 @@ __unwind_incomplete_requests(struct intel_engine_cs *engine)
>>>                } else {
>>>                        struct intel_engine_cs *owner = rq->context->engine;
>>>    
>>> -                     /*
>>> -                      * Decouple the virtual breadcrumb before moving it
>>> -                      * back to the virtual engine -- we don't want the
>>> -                      * request to complete in the background and try
>>> -                      * and cancel the breadcrumb on the virtual engine
>>> -                      * (instead of the old engine where it is linked)!
>>> -                      */
>>> -                     if (test_bit(DMA_FENCE_FLAG_ENABLE_SIGNAL_BIT,
>>> -                                  &rq->fence.flags)) {
>>> -                             spin_lock_nested(&rq->lock,
>>> -                                              SINGLE_DEPTH_NESTING);
>>> -                             i915_request_cancel_breadcrumb(rq);
>>> -                             spin_unlock(&rq->lock);
>>> -                     }
>>
>> Why is this not needed any more?
> 
> Hindsight says that this was just paper. We have just done the same
> cancellation step in i915_request_unsubmit, so all this was doing is
> shrinking the window for a breadcrumb being attached [and with the
> serialisation around testing the I915_FENCE_FLAG_ACTIVE_BIT there should
> be no window at all] while the request is being moved back to the virtual
> engine.

True, how did we miss it until now..

> Now the question is how do we end up attaching to the virtual engine
> while unsubmitted, and that appears to be entirely due to the ACTIVE
> flag being set in retire after completion. The other way is that we use
> the local virtual engine breadcrumb list to defer the signaling on
> submission of an old request.
> 
> So... If I can fix the issues around retirement that means we should be
> able to kill off virtual_xfer_breadcrumbs... I hope so.

I read this as a slightly different series will be coming?

Regards,

Tvrtko




More information about the Intel-gfx mailing list