提交 1c8b46fc 编写于 作者: C Chris Wilson 提交者: Daniel Vetter

drm/i915: Use LRI to update the semaphore registers

The bspec was recently updated to remove the ability to update the
semaphore using the MI_SEMAPHORE_BOX command, the ability to wait upon
the semaphore value remained. Instead the advice is to update the
register using the MI_LOAD_REGISTER_IMM command. In cursory testing,
semaphores continue to function - the question is whether this fixes
some of the deadlocks where the semaphore registers contained stale
values?
Signed-off-by: NChris Wilson <chris@chris-wilson.co.uk>
Cc: Daniel J Blueman <daniel@quora.org>
Reviewed-by: NBen Widawsky <ben@bwidawsk.net>
Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
上级 ae6935dd
...@@ -558,12 +558,9 @@ update_mboxes(struct intel_ring_buffer *ring, ...@@ -558,12 +558,9 @@ update_mboxes(struct intel_ring_buffer *ring,
u32 seqno, u32 seqno,
u32 mmio_offset) u32 mmio_offset)
{ {
intel_ring_emit(ring, MI_SEMAPHORE_MBOX | intel_ring_emit(ring, MI_LOAD_REGISTER_IMM(1));
MI_SEMAPHORE_GLOBAL_GTT |
MI_SEMAPHORE_REGISTER |
MI_SEMAPHORE_UPDATE);
intel_ring_emit(ring, seqno);
intel_ring_emit(ring, mmio_offset); intel_ring_emit(ring, mmio_offset);
intel_ring_emit(ring, seqno);
} }
/** /**
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册