History log of /external/mesa3d/src/gallium/drivers/nouveau/nouveau_fence.c
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
6d1cdec3ba151168bfc3aef222fba6265dfb41fb 06-Apr-2012 Christoph Bumiller <e0425955@student.tuwien.ac.at> nouveau: switch to libdrm_nouveau-2.0
/external/mesa3d/src/gallium/drivers/nouveau/nouveau_fence.c
9849f366cbfd781ebeca725058029b70c96836f9 08-Oct-2011 Marcin Slusarz <marcin.slusarz@gmail.com> nouveau: fix fence hang

If there is not enough space in pushbuffer for fence emission
(nouveau_fence_emit -> nv50_screen_fence_emit -> MARK_RING),
the pushbuffer is flushed, which through flush_notify ->
nv50_default_flush_notify -> nouveau_fence_update marks currently
emitting fence as flushed. But actual emission is done after this mark.
So later when there is a need to wait on this fence and pushbuffer
was not flushed in between, fence wait will never finish causing
application to hang.

To fix this, introduce new fence state between AVAILABLE and EMITTED,
set it before emission and handle it everywhere.

Additionally obtain fence sequence numbers after possible flush in
MARK_RING, because we want to emit fences in correct order.

Reviewed-by: Christoph Bumiller <e0425955@student.tuwien.ac.at>

Note: This is a candidate for the 7.11 branch.
/external/mesa3d/src/gallium/drivers/nouveau/nouveau_fence.c
65b8eea0644fdb7e9150d0e98c06d7f8ba6d5302 25-Sep-2011 Marcin Slusarz <marcin.slusarz@gmail.com> nouveau: fix crash during fence emission

Fence emission can flush the push buffer, which through flush_notify
unreferences recently emitted fence. If ref count is increased after
fence emission, unreference deletes the fence, which causes SIGSEGV.

Backtrace:
nouveau_fence_del
nouveau_fence_ref
nouveau_fence_next
nouveau_pushbuf_flush
MARK_RING
nv50_screen_fence_emit
nouveau_fence_emit
nv50_flush

This bug manifested as an assertion failure in nouveau_fence.c, because
SIGSEGV handler tried to shutdown the application and used messed up
fence.

This issue was reported by Maxim Levitsky.

Note: This is a candidate for the 7.11 branch.
/external/mesa3d/src/gallium/drivers/nouveau/nouveau_fence.c
96054375b1ea98d7827f0d4b567168fa2baeb38e 06-Sep-2011 Marcin Slusarz <marcin.slusarz@gmail.com> nouveau: fix nouveau_fence leak

Note: This is a candidate for the 7.11 branch.
/external/mesa3d/src/gallium/drivers/nouveau/nouveau_fence.c
4388817a678431146744a030bc7c0b8c01da9f72 13-Mar-2011 Christoph Bumiller <e0425955@student.tuwien.ac.at> nv50,nvc0: clean up flushes
/external/mesa3d/src/gallium/drivers/nouveau/nouveau_fence.c
5a0915870c7e994d20334042b7647db749e79224 01-Mar-2011 Ben Skeggs <bskeggs@redhat.com> nouveau: move nv50/nvc0 fencing to common location, and modify slightly

Modified from original to remove chipset-specific code, and to be decoupled
from the mm present in said drivers.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
/external/mesa3d/src/gallium/drivers/nouveau/nouveau_fence.c