]> git.baikalelectronics.ru Git - kernel.git/commit
drm/i915: Allow overlapping userptr objects
authorChris Wilson <chris@chris-wilson.co.uk>
Mon, 21 Jul 2014 12:21:23 +0000 (13:21 +0100)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Thu, 24 Jul 2014 09:00:00 +0000 (11:00 +0200)
commit3a5703a3d8c794388682a96b32bb5ff845a84181
tree16aa5330caf27ba5b2d54de154c6aa1d60f506da
parent15b28339fb9a0cab29207e0f8c6b6b91eccd75c6
drm/i915: Allow overlapping userptr objects

Whilst I strongly advise against doing so for the implicit coherency
issues between the multiple buffer objects accessing the same backing
store, it nevertheless is a valid use case, akin to mmaping the same
file multiple times.

The reason why we forbade it earlier was that our use of the interval
tree for fast invalidation upon vma changes excluded overlapping
objects. So in the case where the user wishes to create such pairs of
overlapping objects, we degrade the range invalidation to walkin the
linear list of objects associated with the mm.

A situation where overlapping objects could arise is the lax implementation
of MIT-SHM Pixmaps in the xserver. A second situation is where the user
wishes to have different access modes to a region of memory (e.g. access
through a read-only userptr buffer and through a normal userptr buffer).

v2: Compile for mmu-notifiers after tweaking
v3: Rename is_linear/has_linear

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: "Li, Victor Y" <victor.y.li@intel.com>
Cc: "Kelley, Sean V" <sean.v.kelley@intel.com>
Cc: Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com>
Cc: "Gong, Zhipeng" <zhipeng.gong@intel.com>
Cc: Akash Goel <akash.goel@intel.com>
Cc: "Volkin, Bradley D" <bradley.d.volkin@intel.com>
Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
drivers/gpu/drm/i915/i915_gem_userptr.c