OSDN Git Service

drm/msm: Add a way for userspace to allocate GPU iova
authorRob Clark <robdclark@chromium.org>
Mon, 11 Apr 2022 21:58:39 +0000 (14:58 -0700)
committerRob Clark <robdclark@chromium.org>
Thu, 21 Apr 2022 22:03:12 +0000 (15:03 -0700)
commita636a0ff11483a4c158acc31ee7ca083d98a0d13
treeff1593b0178b87fd101d67faf58adb2c40b71314
parent95d1deb02a9c93bf9ea8cebe61f0c26cadf43cf9
drm/msm: Add a way for userspace to allocate GPU iova

The motivation at this point is mainly native userspace mesa driver in a
VM guest.  The one remaining synchronous "hotpath" is buffer allocation,
because guest needs to wait to know the bo's iova before it can start
emitting cmdstream/state that references the new bo.  By allocating the
iova in the guest userspace, we no longer need to wait for a response
from the host, but can just rely on the allocation request being
processed before the cmdstream submission.  Allocation failures (OoM,
etc) would just be treated as context-lost (ie. GL_GUILTY_CONTEXT_RESET)
or subsequent allocations (or readpix, etc) can raise GL_OUT_OF_MEMORY.

v2: Fix inuse check
v3: Change mismatched iova case to -EBUSY

Signed-off-by: Rob Clark <robdclark@chromium.org>
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Reviewed-by: Dmitry Osipenko <dmitry.osipenko@collabora.com>
Link: https://lore.kernel.org/r/20220411215849.297838-11-robdclark@gmail.com
Signed-off-by: Rob Clark <robdclark@chromium.org>
drivers/gpu/drm/msm/adreno/adreno_gpu.c
drivers/gpu/drm/msm/msm_drv.c
drivers/gpu/drm/msm/msm_gem.c
drivers/gpu/drm/msm/msm_gem.h
drivers/gpu/drm/msm/msm_gem_vma.c
include/uapi/drm/msm_drm.h