linux_dsm_epyc7002/drivers/gpu/drm
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: 5ba6c9ff96 ("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
..
amd drm/amd|radeon: Drop drm_vblank_cleanup 2017-06-23 11:08:44 +02:00
arc drm: arcpgu: arc_pgu_crtc_mode_valid() can be static 2017-06-23 12:29:32 +02:00
arm drm/hdlcd|mali: Drop drm_vblank_cleanup 2017-06-01 08:02:14 +02:00
armada drm: armada: make of_device_ids const. 2017-06-21 09:06:44 +02:00
ast drm/pci: Deprecate drm_pci_init/exit completely 2017-06-20 10:41:03 +02:00
atmel-hlcdc drm: atmel-hlcdc: add support for 8-bit color lookup table mode 2017-06-22 22:53:02 +02:00
bochs drm/pci: Deprecate drm_pci_init/exit completely 2017-06-20 10:41:03 +02:00
bridge drm/bridge: Refactor out the panel wrapper from the lvds-encoder bridge. 2017-06-05 14:00:40 +05:30
cirrus drm/pci: Deprecate drm_pci_init/exit completely 2017-06-20 10:41:03 +02:00
etnaviv drm: drop drm_[cm]alloc* helpers 2017-05-18 17:22:39 +02:00
exynos drm/exynos: Drop drm_vblank_cleanup 2017-06-01 11:43:41 +02:00
fsl-dcu
gma500 drm/pci: Deprecate drm_pci_init/exit completely 2017-06-20 10:41:03 +02:00
hisilicon drm/hisilicon: fix include notation and remove -Iinclude/drm flag 2017-05-17 14:35:22 +02:00
i2c drm/i2c: remove unneeded -Iinclude/drm compiler flag 2017-05-18 07:13:04 +02:00
i810 drm/pci: Deprecate drm_pci_init/exit completely 2017-06-20 10:41:03 +02:00
i915 drm: Remove drm_driver->set_busid hook 2017-06-20 10:40:49 +02:00
imx drm/bridge/synopsys: dw-hdmi: Use bridge->mode_valid() callback 2017-06-05 12:09:50 +05:30
lib
mediatek drm/mediatek: use drm_for_each_connector_iter() 2017-05-26 02:12:33 -03:00
meson drm/bridge/synopsys: dw-hdmi: Use bridge->mode_valid() callback 2017-06-05 12:09:50 +05:30
mga drm/pci: Deprecate drm_pci_init/exit completely 2017-06-20 10:41:03 +02:00
mgag200 drm/pci: Deprecate drm_pci_init/exit completely 2017-06-20 10:41:03 +02:00
msm drm: Add DRM_MODE_ROTATE_ and DRM_MODE_REFLECT_ to UAPI 2017-05-22 09:49:48 +02:00
mxsfb drm/mxsfb: Drop drm_vblank_cleanup 2017-06-23 11:08:44 +02:00
nouveau drm/pci: Deprecate drm_pci_init/exit completely 2017-06-20 10:41:03 +02:00
omapdrm drm: Add DRM_MODE_ROTATE_ and DRM_MODE_REFLECT_ to UAPI 2017-05-22 09:49:48 +02:00
panel drm/panel: s6e3ha2: Add support for s6e3hf2 panel on TM2e board 2017-06-14 20:18:22 +02:00
pl111 drm/pl111: Fix offset calculation for the primary plane. 2017-06-07 11:50:00 -07:00
qxl drm/qxl: move extern variable declaration header file 2017-06-23 10:06:43 +02:00
r128 drm/pci: Deprecate drm_pci_init/exit completely 2017-06-20 10:41:03 +02:00
radeon drm/amd|radeon: Drop drm_vblank_cleanup 2017-06-23 11:08:44 +02:00
rcar-du
rockchip drm/rockchip: dw_hdmi: introduce the pclk for grf 2017-06-23 08:52:03 +08:00
savage drm/pci: Deprecate drm_pci_init/exit completely 2017-06-20 10:41:03 +02:00
selftests
shmobile drm/shmob: Drop drm_vblank_cleanup 2017-06-22 08:41:15 +02:00
sis drm/pci: Deprecate drm_pci_init/exit completely 2017-06-20 10:41:03 +02:00
sti drm: sti: sti_hqvdp: undo preparation of a clock source. 2017-06-21 15:45:19 +02:00
stm drm/stm: Drop drm_vblank_cleanup 2017-05-31 10:48:58 +02:00
sun4i drm/sun4i: Drop drm_vblank_cleanup 2017-05-31 10:48:40 +02:00
tdfx drm/pci: Deprecate drm_pci_init/exit completely 2017-06-20 10:41:03 +02:00
tegra drm/tegra: Drop drm_vblank_cleanup 2017-06-20 10:20:40 +02:00
tilcdc drm/tilcdc: fix include notation and remove -Iinclude/drm flag 2017-05-17 14:36:49 +02:00
tinydrm drm: Use vsnprintf extension %ph 2017-05-31 10:30:38 +02:00
ttm drm: drop drm_[cm]alloc* helpers 2017-05-18 17:22:39 +02:00
udl drm/udl: Remove dummy busid callback 2017-06-20 10:40:31 +02:00
vc4 drm/vc4: Remove dead vc4_event_pending(). 2017-06-22 11:14:39 -07:00
vgem drm/vgem: Pin our pages for dmabuf exports 2017-06-23 13:04:22 +02:00
via drm/pci: Deprecate drm_pci_init/exit completely 2017-06-20 10:41:03 +02:00
virtio drm: Remove drm_device->virtdev 2017-05-29 20:57:25 +02:00
vmwgfx drm/pci: Deprecate drm_pci_init/exit completely 2017-06-20 10:41:03 +02:00
zte drm/zte: Drop drm_vblank_cleanup 2017-06-22 08:41:15 +02:00
ati_pcigart.c
drm_agpsupport.c
drm_atomic_helper.c drm: Add drm_atomic_helper_wait_for_flip_done() 2017-06-22 15:11:51 +02:00
drm_atomic.c drm: Reduce scope of 'state' variable 2017-06-15 14:26:02 -04:00
drm_auth.c
drm_blend.c drm: Add DRM_MODE_ROTATE_ and DRM_MODE_REFLECT_ to UAPI 2017-05-22 09:49:48 +02:00
drm_bridge.c drm: Introduce drm_bridge_mode_valid() 2017-05-30 08:37:50 +02:00
drm_bufs.c
drm_cache.c
drm_color_mgmt.c drm: More links for gamma support helpers 2017-06-20 12:13:11 +02:00
drm_connector.c
drm_context.c
drm_crtc_helper_internal.h drm: Add drm_{crtc/encoder/connector}_mode_valid() 2017-05-30 08:37:24 +02:00
drm_crtc_helper.c
drm_crtc_internal.h
drm_crtc.c
drm_debugfs_crc.c
drm_debugfs.c
drm_dma.c
drm_dp_aux_dev.c
drm_dp_dual_mode_helper.c
drm_dp_helper.c
drm_dp_mst_topology.c drm: Use vsnprintf extension %ph 2017-05-31 10:30:38 +02:00
drm_drv.c
drm_dumb_buffers.c
drm_edid_load.c
drm_edid.c
drm_encoder_slave.c
drm_encoder.c
drm_fb_cma_helper.c drm: Convert CMA fbdev console suspend helpers to use bool 2017-06-20 16:23:40 +02:00
drm_fb_helper.c drm: Add DRM_MODE_ROTATE_ and DRM_MODE_REFLECT_ to UAPI 2017-05-22 09:49:48 +02:00
drm_file.c drm/doc: Improve ioctl/fops docs a bit more 2017-06-20 10:41:29 +02:00
drm_flip_work.c
drm_fourcc.c
drm_framebuffer.c
drm_gem_cma_helper.c
drm_gem.c drm: drop drm_[cm]alloc* helpers 2017-05-18 17:22:39 +02:00
drm_global.c
drm_hashtab.c
drm_info.c
drm_internal.h drm: Remove drm_driver->set_busid hook 2017-06-20 10:40:49 +02:00
drm_ioc32.c
drm_ioctl.c drm: Check for drm_device->dev in drm_set_busid 2017-06-21 17:38:43 +02:00
drm_irq.c drm/doc: Polish irq helper documentation 2017-06-01 08:02:14 +02:00
drm_kms_helper_common.c
drm_legacy.h
drm_lock.c
drm_memory.c
drm_mipi_dsi.c
drm_mm.c
drm_mode_config.c
drm_mode_object.c
drm_modes.c
drm_modeset_helper.c
drm_modeset_lock.c
drm_of.c
drm_panel.c
drm_pci.c drm/pci: Deprecate drm_pci_init/exit completely 2017-06-20 10:41:03 +02:00
drm_plane_helper.c drm: Add DRM_MODE_ROTATE_ and DRM_MODE_REFLECT_ to UAPI 2017-05-22 09:49:48 +02:00
drm_plane.c
drm_prime.c
drm_print.c
drm_probe_helper.c drm: Use new mode_valid() helpers in connector probe helper 2017-05-30 08:37:50 +02:00
drm_property.c
drm_rect.c drm: Add DRM_MODE_ROTATE_ and DRM_MODE_REFLECT_ to UAPI 2017-05-22 09:49:48 +02:00
drm_scatter.c
drm_scdc_helper.c
drm_simple_kms_helper.c
drm_sysfs.c
drm_trace_points.c
drm_trace.h
drm_vblank.c drm/vblank: Consistent drm_crtc_ prefix 2017-06-20 10:28:58 +02:00
drm_vm.c
drm_vma_manager.c
Kconfig
Makefile drm/bridge: Build the panel wrapper in drm_kms_helper 2017-06-07 21:19:56 +05:30