drm/msm/gem: Add fenced vma unpin
authorRob Clark <robdclark@chromium.org>
Mon, 11 Apr 2022 21:58:38 +0000 (14:58 -0700)
committerRob Clark <robdclark@chromium.org>
Thu, 21 Apr 2022 22:03:12 +0000 (15:03 -0700)
commit95d1deb02a9c93bf9ea8cebe61f0c26cadf43cf9
tree7e87b1a6478db525016fa59d60c886a124e19d70
parent27674c666826d758884d61dbfa8476347bed469d
drm/msm/gem: Add fenced vma unpin

With userspace allocated iova (next patch), we can have a race condition
where userspace observes the fence completion and deletes the vma before
retire_submit() gets around to unpinning the vma.  To handle this, add a
fenced unpin which drops the refcount but tracks the fence, and update
msm_gem_vma_inuse() to check any previously unsignaled fences.

v2: Fix inuse underflow (duplicate unpin)
v3: Fix msm_job_run() vs submit_cleanup() race condition

Signed-off-by: Rob Clark <robdclark@chromium.org>
Link: https://lore.kernel.org/r/20220411215849.297838-10-robdclark@gmail.com
Signed-off-by: Rob Clark <robdclark@chromium.org>
drivers/gpu/drm/msm/msm_fence.c
drivers/gpu/drm/msm/msm_fence.h
drivers/gpu/drm/msm/msm_gem.c
drivers/gpu/drm/msm/msm_gem.h
drivers/gpu/drm/msm/msm_gem_submit.c
drivers/gpu/drm/msm/msm_gem_vma.c
drivers/gpu/drm/msm/msm_ringbuffer.c