[Intel-gfx] [PATCH 5/7] drm/i915: Interrupt driven fences

Jesse Barnes jbarnes at virtuousgeek.org
Mon Jan 11 15:01:17 PST 2016


On 01/11/2016 11:10 AM, John Harrison wrote:
> On 08/01/2016 22:46, Chris Wilson wrote:
>> On Fri, Jan 08, 2016 at 06:47:26PM +0000, John.C.Harrison at Intel.com wrote:
>>> +void i915_gem_request_notify(struct intel_engine_cs *ring, bool fence_locked)
>>> +{
>>> +    struct drm_i915_gem_request *req, *req_next;
>>> +    unsigned long flags;
>>>       u32 seqno;
>>>   -    seqno = req->ring->get_seqno(req->ring, false/*lazy_coherency*/);
>>> +    if (list_empty(&ring->fence_signal_list))
>>> +        return;
>>> +
>>> +    if (!fence_locked)
>>> +        spin_lock_irqsave(&ring->fence_lock, flags);
>>>   -    return i915_seqno_passed(seqno, req->seqno);
>>> +    seqno = ring->get_seqno(ring, false);
>> We really don't want to do be doing the forcewake dance from inside the
>> interrupt handler. We made that mistake years ago.
>> -Chris
>>
> What forcewake dance? Nothing in the above code mentions force wake.

get_seqno() w/o lazy_coherency set will do a POSTING_READ of the ring active head, which goes through our crazy read function and does forcewake.  So we may need something smarter here.

Jesse



More information about the Intel-gfx mailing list