drm/i915: Tidy generation of the GTT mmap offset
authorChris Wilson <chris@chris-wilson.co.uk>
Fri, 5 Aug 2016 09:14:14 +0000 (10:14 +0100)
committerChris Wilson <chris@chris-wilson.co.uk>
Fri, 5 Aug 2016 09:54:38 +0000 (10:54 +0100)
commitf3f6184c5fab11d57a0c28524db2ddd6a68cb34a
tree7771fe767d836a6f89b180c1effec9cbcdba6dff
parent5cba5be6b61d310590f48670f6285cdb83441b91
drm/i915: Tidy generation of the GTT mmap offset

If we make the observation that mmap-offsets are only released when we
free an object, we can then deduce that the shrinker only creates free
space in the mmap arena indirectly by flushing the request list and
freeing expired objects. If we combine this with the lockless
vma-manager and lockless idling, we can avoid taking our big struct_mutex
until we need to actually free the requests.

One side-effect is that we defer the madvise checking until we need the
pages (i.e. the fault handler). This brings us into line with the other
delayed checks (and madvise in general).

v2: s/ret/err/ and use if (!err) rather than if (ret == 0)

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/1470388464-28458-9-git-send-email-chris@chris-wilson.co.uk
drivers/gpu/drm/i915/i915_gem.c