linux_dsm_epyc7002/drivers/gpu/drm/i915/gem
Chris Wilson 7865559872 drm/i915/gem: Store mmap_offsets in an rbtree rather than a plain list
Currently we create a new mmap_offset for every call to
mmap_offset_ioctl. This exposes ourselves to an abusive client that may
simply create new mmap_offsets ad infinitum, which will exhaust physical
memory and the virtual address space. In addition to the exhaustion, a
very long linear list of mmap_offsets causes other clients using the
object to incur long list walks -- these long lists can also be
generated by simply having many clients generate their own mmap_offset.

However, we can simply use the drm_vma_node itself to manage the file
association (allow/revoke) dropping our need to keep an mmo per-file.
Then if we keep a small rbtree of per-type mmap_offsets, we can lookup
duplicate requests quickly.

Fixes: cc662126b4 ("drm/i915: Introduce DRM_I915_GEM_MMAP_OFFSET")
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Abdiel Janulgue <abdiel.janulgue@linux.intel.com>
Reviewed-by: Abdiel Janulgue <abdiel.janulgue@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20200120104924.4000706-3-chris@chris-wilson.co.uk
2020-01-20 15:38:37 +00:00
..
selftests Merge drm/drm-next into drm-intel-next-queued 2020-01-09 17:19:12 +02:00
i915_gem_busy.c drm/i915: Align engine->uabi_class/instance with i915_drm.h 2020-01-20 09:13:01 +00:00
i915_gem_clflush.c drm/i915: Hold reference to intel_frontbuffer as we track activity 2019-12-18 12:09:57 +00:00
i915_gem_clflush.h
i915_gem_client_blt.c
i915_gem_client_blt.h
i915_gem_context_types.h drm/i915: Drop GEM context as a direct link from i915_request 2019-12-20 10:52:21 +00:00
i915_gem_context.c drm/i915: Pin the context as we work on it 2020-01-09 12:50:26 +00:00
i915_gem_context.h drm/i915/gtt: split up i915_gem_gtt 2020-01-07 19:27:36 +00:00
i915_gem_dmabuf.c drm-misc-next for v5.6: 2019-12-17 13:57:54 +01:00
i915_gem_domain.c drm/i915: Hold reference to intel_frontbuffer as we track activity 2019-12-18 12:09:57 +00:00
i915_gem_execbuffer.c drm/i915/gem: Take local vma references for the parser 2020-01-14 15:25:12 +00:00
i915_gem_fence.c
i915_gem_internal.c drm/i915/gem: Distinguish each object type 2019-10-22 16:23:32 +01:00
i915_gem_ioctls.h drm/i915: Introduce DRM_I915_GEM_MMAP_OFFSET 2019-12-04 15:11:44 +00:00
i915_gem_lmem.c drm/i915/gem: Support discontiguous lmem object maps 2020-01-03 11:26:01 +00:00
i915_gem_lmem.h drm/i915/gem: Support discontiguous lmem object maps 2020-01-03 11:26:01 +00:00
i915_gem_mman.c drm/i915/gem: Store mmap_offsets in an rbtree rather than a plain list 2020-01-20 15:38:37 +00:00
i915_gem_mman.h drm/i915: Introduce DRM_I915_GEM_MMAP_OFFSET 2019-12-04 15:11:44 +00:00
i915_gem_object_blt.c drm/i915/blt: fixup block_size rounding 2019-10-29 06:57:20 +00:00
i915_gem_object_blt.h
i915_gem_object_types.h drm/i915/gem: Store mmap_offsets in an rbtree rather than a plain list 2020-01-20 15:38:37 +00:00
i915_gem_object.c drm/i915/gem: Store mmap_offsets in an rbtree rather than a plain list 2020-01-20 15:38:37 +00:00
i915_gem_object.h drm/i915/gtt: split up i915_gem_gtt 2020-01-07 19:27:36 +00:00
i915_gem_pages.c drm/i915/gem: Support discontiguous lmem object maps 2020-01-03 11:26:01 +00:00
i915_gem_phys.c drm/i915: Switch obj->mm.lock lockdep annotations on its head 2019-11-07 09:58:11 +01:00
i915_gem_pm.c drm/i915/gt: Pull intel_gt_init_hw() into intel_gt_resume() 2019-12-22 15:18:04 +00:00
i915_gem_pm.h drm/i915: Teach record_defaults to operate on the intel_gt 2019-10-22 20:43:07 +01:00
i915_gem_region.c drm/i915/gem: Single page objects are naturally contiguous 2020-01-02 21:21:17 +00:00
i915_gem_region.h
i915_gem_shmem.c drm/i915/lmem: debugfs for LMEM details 2019-12-28 17:54:43 +00:00
i915_gem_shrinker.c Merge drm/drm-next into drm-intel-next-queued 2019-12-11 11:13:50 +02:00
i915_gem_shrinker.h
i915_gem_stolen.c drm/i915/lmem: debugfs for LMEM details 2019-12-28 17:54:43 +00:00
i915_gem_stolen.h drm/i915: treat stolen as a region 2019-10-18 12:41:05 +01:00
i915_gem_throttle.c
i915_gem_tiling.c drm/i915: Introduce DRM_I915_GEM_MMAP_OFFSET 2019-12-04 15:11:44 +00:00
i915_gem_userptr.c drm/i915/userptr: fix size calculation 2020-01-17 19:14:03 +00:00
i915_gem_wait.c
i915_gemfs.c
i915_gemfs.h