Re: [PATCH 37/48] drm/i915: Defer request freeing

Daniel Vetter
2013-12-18T14:38:40Z

On Thu, Dec 12, 2013 at 11:08:47AM +0000, Chris Wilson wrote:
> On Fri, Dec 06, 2013 at 02:11:22PM -0800, Ben Widawsky wrote:
> > From: Ben Widawsky <ben@bwidawsk.net>
> >
> > 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.
>
> So just process the active_list first, the requests and objects
> associated with the ring should be fairly independent.

Also, stuff like this needs a testcase, and I didn't spot such a thing in
the patches posted thus far.
-Daniel
--
Daniel Vetter
Software Engineer, Intel Corporation
+41 (0) 79 365 57 48 - http://blog.ffwll.ch