[Intel-gfx] [PATCH 5/7] drm/i915: Interrupt driven fences
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.
> 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.
More information about the Intel-gfx