Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

drm/msm: Use DMA_RESV_USAGE_BOOKKEEP/KERNEL

Any place we wait for a BO to become idle, we should use BOOKKEEP usage,
to ensure that it waits for _any_ activity.

Signed-off-by: Rob Clark <robdclark@chromium.org>
Signed-off-by: Rob Clark <robin.clark@oss.qualcomm.com>
Tested-by: Antonino Maniscalco <antomani103@gmail.com>
Reviewed-by: Antonino Maniscalco <antomani103@gmail.com>
Patchwork: https://patchwork.freedesktop.org/patch/661506/

authored by

Rob Clark and committed by
Rob Clark
cefb919c e1341f91

+4 -4
+3 -3
drivers/gpu/drm/msm/msm_gem.c
··· 93 93 * TODO we might need to kick this to a queue to avoid blocking 94 94 * in CLOSE ioctl 95 95 */ 96 - dma_resv_wait_timeout(obj->resv, DMA_RESV_USAGE_READ, false, 97 - msecs_to_jiffies(1000)); 96 + dma_resv_wait_timeout(obj->resv, DMA_RESV_USAGE_BOOKKEEP, false, 97 + MAX_SCHEDULE_TIMEOUT); 98 98 99 99 msm_gem_lock_vm_and_obj(&exec, obj, ctx->vm); 100 100 put_iova_spaces(obj, ctx->vm, true); ··· 895 895 if (to_msm_bo(obj)->pin_count) 896 896 return true; 897 897 898 - return !dma_resv_test_signaled(obj->resv, dma_resv_usage_rw(true)); 898 + return !dma_resv_test_signaled(obj->resv, DMA_RESV_USAGE_BOOKKEEP); 899 899 } 900 900 901 901 int msm_gem_cpu_prep(struct drm_gem_object *obj, uint32_t op, ktime_t *timeout)
+1 -1
drivers/gpu/drm/msm/msm_gem_shrinker.c
··· 139 139 static bool 140 140 wait_for_idle(struct drm_gem_object *obj) 141 141 { 142 - enum dma_resv_usage usage = dma_resv_usage_rw(true); 142 + enum dma_resv_usage usage = DMA_RESV_USAGE_BOOKKEEP; 143 143 return dma_resv_wait_timeout(obj->resv, usage, false, 10) > 0; 144 144 } 145 145