linux/drivers/gpu/drm/i915/gem
Chris Wilson 1aff1903d0 drm/i915: Hide unshrinkable context objects from the shrinker
The shrinker cannot touch objects used by the contexts (logical state
and ring). Currently we mark those as "pin_global" to let the shrinker
skip over them, however, if we remove them from the shrinker lists
entirely, we don't event have to include them in our shrink accounting.

By keeping the unshrinkable objects in our shrinker tracking, we report
a large number of objects available to be shrunk, and leave the shrinker
deeply unsatisfied when we fail to reclaim those. The shrinker will
persist in trying to reclaim the unavailable objects, forcing the system
into a livelock (not even hitting the dread oomkiller).

v2: Extend unshrinkable protection for perma-pinned scratch and guc
allocations (Tvrtko)
v3: Notice that we should be pinned when marking unshrinkable and so the
link cannot be empty; merge duplicate paths.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Reviewed-by: Matthew Auld <matthew.auld@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20190802212137.22207-1-chris@chris-wilson.co.uk
2019-08-02 23:39:46 +01:00
..
selftests drm/i915/selftests: Pass intel_context to igt_spinner 2019-07-31 09:45:27 +01:00
i915_gem_busy.c drm/i915: Use drm_gem_object.resv 2019-06-18 15:30:32 +01:00
i915_gem_clflush.c drm/i915: Use drm_gem_object.resv 2019-06-18 15:30:32 +01:00
i915_gem_clflush.h drm/i915: Move more GEM objects under gem/ 2019-05-28 12:45:29 +01:00
i915_gem_client_blt.c drm/i915: Avoid ce->gem_context->i915 2019-07-31 07:43:42 +01:00
i915_gem_client_blt.h drm/i915: add in-kernel blitter client 2019-05-30 12:01:44 +01:00
i915_gem_context_types.h drm/i915: Remove lrc default desc from GEM context 2019-08-01 17:37:02 +01:00
i915_gem_context.c drm/i915: Remove lrc default desc from GEM context 2019-08-01 17:37:02 +01:00
i915_gem_context.h drm/i915: Remove unused i915_gem_context_lookup_engine 2019-07-09 21:36:50 +01:00
i915_gem_dmabuf.c drm/i915: Use drm_gem_object.resv 2019-06-18 15:30:32 +01:00
i915_gem_domain.c drm/i915: move modesetting core code under display/ 2019-06-17 11:48:32 +03:00
i915_gem_execbuffer.c drm/i915: Flush extra hard after writing relocations through the GTT 2019-08-02 08:38:45 +01:00
i915_gem_fence.c drm/i915: Use drm_gem_object.resv 2019-06-18 15:30:32 +01:00
i915_gem_internal.c drm/i915: Pull scatterlist utils out of i915_gem.h 2019-05-28 12:45:29 +01:00
i915_gem_ioctls.h
i915_gem_mman.c drm/i915/gt: Use intel_gt as the primary object for handling resets 2019-07-12 21:06:56 +01:00
i915_gem_object_blt.c drm/i915/gt: Provide a local intel_context.vm 2019-07-30 16:09:35 +01:00
i915_gem_object_blt.h drm/i915: add in-kernel blitter client 2019-05-30 12:01:44 +01:00
i915_gem_object_types.h drm/i915: Throw away the active object retirement complexity 2019-06-21 19:47:51 +01:00
i915_gem_object.c drm/i915: Hide unshrinkable context objects from the shrinker 2019-08-02 23:39:46 +01:00
i915_gem_object.h drm/i915: Hide unshrinkable context objects from the shrinker 2019-08-02 23:39:46 +01:00
i915_gem_pages.c drm/i915: Hide unshrinkable context objects from the shrinker 2019-08-02 23:39:46 +01:00
i915_gem_phys.c drm/i915/gem: Defer obj->base.resv fini until RCU callback 2019-07-04 15:34:35 +01:00
i915_gem_pm.c drm/i915/uc: Sanitize uC when GT is sanitized 2019-07-23 11:38:23 +01:00
i915_gem_pm.h drm/i915: Move more GEM objects under gem/ 2019-05-28 12:45:29 +01:00
i915_gem_shmem.c drm/i915/gem: Defer obj->base.resv fini until RCU callback 2019-07-04 15:34:35 +01:00
i915_gem_shrinker.c drm/i915: Hide unshrinkable context objects from the shrinker 2019-08-02 23:39:46 +01:00
i915_gem_stolen.c drm/i915/gem: Defer obj->base.resv fini until RCU callback 2019-07-04 15:34:35 +01:00
i915_gem_throttle.c drm/i915/gt: Use intel_gt as the primary object for handling resets 2019-07-12 21:06:56 +01:00
i915_gem_tiling.c drm/i915: Move more GEM objects under gem/ 2019-05-28 12:45:29 +01:00
i915_gem_userptr.c drm/i915/userptr: Don't mark readonly objects as dirty 2019-07-09 18:54:19 +01:00
i915_gem_wait.c drm/i915: Use drm_gem_object.resv 2019-06-18 15:30:32 +01:00
i915_gemfs.c drm/i915: Move more GEM objects under gem/ 2019-05-28 12:45:29 +01:00
i915_gemfs.h drm/i915: Move more GEM objects under gem/ 2019-05-28 12:45:29 +01:00
Makefile drm/i915: use upstream version of header tests 2019-07-30 12:11:57 +03:00