[Intel-gfx] [PATCH 3/4] drm/i915/bdw: Pin the context backing objects to GGTT on-demand

Chris Wilson chris at chris-wilson.co.uk
Mon Nov 3 22:04:53 CET 2014


On Mon, Nov 03, 2014 at 05:54:16PM +0100, Daniel Vetter wrote:
> On Wed, Oct 29, 2014 at 09:52:52AM +0000, Thomas Daniel wrote:
> > From: Oscar Mateo <oscar.mateo at intel.com>
> > 
> > Up until now, we have pinned every logical ring context backing object
> > during creation, and left it pinned until destruction. This made my life
> > easier, but it's a harmful thing to do, because we cause fragmentation
> > of the GGTT (and, eventually, we would run out of space).
> > 
> > This patch makes the pinning on-demand: the backing objects of the two
> > contexts that are written to the ELSP are pinned right before submission
> > and unpinned once the hardware is done with them. The only context that
> > is still pinned regardless is the global default one, so that the HWS can
> > still be accessed in the same way (ring->status_page).
> > 
> > v2: In the early version of this patch, we were pinning the context as
> > we put it into the ELSP: on the one hand, this is very efficient because
> > only a maximum two contexts are pinned at any given time, but on the other
> > hand, we cannot really pin in interrupt time :(
> > 
> > v3: Use a mutex rather than atomic_t to protect pin count to avoid races.
> > Do not unpin default context in free_request.
> > 
> > v4: Break out pin and unpin into functions.  Fix style problems reported
> > by checkpatch
> > 
> > Issue: VIZ-4277
> 
> This doesn't really do the full task since the integration with the
> shrinker and related igt testcases are missing. What's your plane here?

Oh, I have patches for that. It is remarkably simple.
-Chris

-- 
Chris Wilson, Intel Open Source Technology Centre



More information about the Intel-gfx mailing list