]> git.baikalelectronics.ru Git - kernel.git/commit
drm/i915: Replace PIN_NONFAULT with calls to PIN_NOEVICT
authorChris Wilson <chris@chris-wilson.co.uk>
Wed, 21 Aug 2019 12:32:34 +0000 (13:32 +0100)
committerChris Wilson <chris@chris-wilson.co.uk>
Wed, 21 Aug 2019 13:07:54 +0000 (14:07 +0100)
commitbde9a9c1b08313a4942cb91d8f293ca0d7eddc78
tree1e0540db40effef4ea0e18750f07622b46f3dd2e
parentb67330e9ab191d1eceeab523d8bd5a67c9bc9226
drm/i915: Replace PIN_NONFAULT with calls to PIN_NOEVICT

When under severe stress for GTT mappable space, the LRU eviction model
falls off a cliff. We spend all our time scanning the much larger
non-mappable area searching for something within the mappable zone we can
evict. Turn this on its head by only using the full vma for the object if
it is already pinned in the mappable zone or there is sufficient *free*
space to accommodate it (prioritizing speedy reuse). If there is not,
immediately fall back to using small chunks (tilerow for GTT mmap, single
pages for pwrite/relocation) and using random eviction before doing a full
search.

Testcase: igt/gem_concurrent_blt
References: https://bugs.freedesktop.org/show_bug.cgi?id=110848
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Matthew Auld <matthew.auld@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20190821123234.19194-1-chris@chris-wilson.co.uk
drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c
drivers/gpu/drm/i915/gem/i915_gem_mman.c
drivers/gpu/drm/i915/i915_gem.c
drivers/gpu/drm/i915/i915_gem_evict.c
drivers/gpu/drm/i915/i915_gem_gtt.c
drivers/gpu/drm/i915/i915_gem_gtt.h