Chris Wilson 71bb23c707 drm/vgem: Pin our pages for dmabuf exports
When the caller maps their dmabuf and we return an sg_table, the caller
doesn't expect the pages beneath that sg_table to vanish on a whim (i.e.
under mempressure). The contract is that the pages are pinned for the
duration of the mapping (from dma_buf_map_attachment() to
dma_buf_unmap_attachment). To comply, we need to introduce our own
vgem_object.pages_pin_count and elevate it across the mapping. However,
the drm_prime interface we use calls drv->prime_pin on dma_buf_attach
and drv->prime_unpin on dma_buf_detach, which while that does cover the
mapping is much broader than is desired -- but it will do for now.

v2: also hold the pin across prime_vmap/vunmap

Reported-by: Tomi Sarvela <tomi.p.sarvela@intel.com>
Testcase: igt/gem_concurrent_blit/*swap*vgem*
Fixes: 5ba6c9ff961a ("drm/vgem: Fix mmaping")
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Tomi Sarvela <tomi.p.sarvela@intel.com>
Cc: Laura Abbott <labbott@redhat.com>
Cc: Sean Paul <seanpaul@chromium.org>
Cc: Matthew Auld <matthew.auld@intel.com>
Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
Cc: <stable@vger.kernel.org> # needs a backport
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Link: http://patchwork.freedesktop.org/patch/msgid/20170622134617.17912-1-chris@chris-wilson.co.uk
2017-06-23 13:04:22 +02:00
..
2017-05-18 17:22:39 +02:00
2017-06-23 11:08:44 +02:00
2017-05-31 10:48:58 +02:00
2017-05-31 10:48:40 +02:00
2017-06-20 10:20:40 +02:00
2017-05-31 10:30:38 +02:00
2017-05-18 17:22:39 +02:00
2017-06-20 10:40:31 +02:00
2017-05-29 20:57:25 +02:00
2017-06-22 08:41:15 +02:00
2017-03-24 09:36:06 +01:00
2017-05-18 17:22:39 +02:00
2017-04-04 20:47:54 +02:00
2017-03-14 14:38:33 +01:00