The exynos g2d interface is very unusual, but it looks like the userptr objects are persistent. Hence they need FOLL_LONGTERM.
Signed-off-by: Daniel Vetter <daniel.vet...@intel.com> Cc: Jason Gunthorpe <j...@ziepe.ca> Cc: Inki Dae <inki....@samsung.com> Cc: Joonyoung Shim <jy0922.s...@samsung.com> Cc: Seung-Woo Kim <sw0312....@samsung.com> Cc: Kyungmin Park <kyungmin.p...@samsung.com> Cc: Kukjin Kim <kg...@kernel.org> Cc: Krzysztof Kozlowski <k...@kernel.org> Cc: Andrew Morton <a...@linux-foundation.org> Cc: John Hubbard <jhubb...@nvidia.com> Cc: Jérôme Glisse <jgli...@redhat.com> Cc: Jan Kara <j...@suse.cz> Cc: Dan Williams <dan.j.willi...@intel.com> Cc: linux...@kvack.org Cc: linux-arm-ker...@lists.infradead.org Cc: linux-samsung-...@vger.kernel.org Cc: linux-me...@vger.kernel.org Signed-off-by: Daniel Vetter <daniel.vet...@ffwll.ch> --- drivers/gpu/drm/exynos/exynos_drm_g2d.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/exynos/exynos_drm_g2d.c b/drivers/gpu/drm/exynos/exynos_drm_g2d.c index ecede41af9b9..1e0c5a7f206e 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_g2d.c +++ b/drivers/gpu/drm/exynos/exynos_drm_g2d.c @@ -475,7 +475,8 @@ static dma_addr_t *g2d_userptr_get_dma_addr(struct g2d_data *g2d, goto err_free; } - ret = pin_user_pages_fast(start, npages, FOLL_FORCE | FOLL_WRITE, + ret = pin_user_pages_fast(start, npages, + FOLL_FORCE | FOLL_WRITE | FOLL_LONGTERM, g2d_userptr->pages); if (ret != npages) { DRM_DEV_ERROR(g2d->dev, -- 2.29.2