]> git.baikalelectronics.ru Git - kernel.git/commit
drm/i915: Defer request freeing
authorBen Widawsky <ben@bwidawsk.net>
Fri, 6 Dec 2013 22:11:22 +0000 (14:11 -0800)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Wed, 18 Dec 2013 14:52:51 +0000 (15:52 +0100)
commit0847475a87a0c1ceee0d5bee3983df273c6c9341
tree3aec99c77a82a0588f586fd6949994e87148944a
parent92b645a36af326dfc331ceea2a5cf5e764a832e2
drm/i915: Defer request freeing

With context destruction, we always want to be able to tear down the
underlying address space. This is invoked on the last unreference to the
context which could happen before we've moved all objects to the
inactive list. To enable a clean tear down the address space, make sure
to process the request free lastly.

Without this change, we cannot guarantee to we don't still have active
objects in the VM.

As an example of a failing case:
CTX-A is created, count=1
CTX-A is used during execbuf
does a context switch count = 2
and add_request count = 3
CTX B runs, switches, CTX-A count = 2
CTX-A is destroyed, count = 1
retire requests is called
free_request from CTX-A, count = 0 <--- free context with active object

As mentioned above, by doing the free request after processing the
active list, we can avoid this case.

Signed-off-by: Ben Widawsky <ben@bwidawsk.net>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
drivers/gpu/drm/i915/i915_gem.c