We actually need to wait for the moving fence after pinning the BO to make sure that the pin is completed. Signed-off-by: Christian König <christian.koenig@xxxxxxx> CC: stable@xxxxxxxxxx --- drivers/gpu/drm/nouveau/nouveau_prime.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/nouveau/nouveau_prime.c b/drivers/gpu/drm/nouveau/nouveau_prime.c index 347488685f74..591738545eba 100644 --- a/drivers/gpu/drm/nouveau/nouveau_prime.c +++ b/drivers/gpu/drm/nouveau/nouveau_prime.c @@ -93,7 +93,13 @@ int nouveau_gem_prime_pin(struct drm_gem_object *obj) if (ret) return -EINVAL; - return 0; + if (nvbo->bo.moving) { + ret = dma_fence_wait(nvbo->bo.moving, true); + if (ret) + nouveau_bo_unpin(nvbo); + } + + return ret; } void nouveau_gem_prime_unpin(struct drm_gem_object *obj) -- 2.25.1