diff options
| author | Rob Clark <robdclark@gmail.com> | 2018-11-29 09:54:42 -0500 |
|---|---|---|
| committer | Rob Clark <robdclark@gmail.com> | 2018-12-11 13:07:04 -0500 |
| commit | 789d2e5a772ce312a7a2b81ffaf304946195beb5 (patch) | |
| tree | 62f529a89adb976caf18f5f9aceb5513aaca87ef /drivers | |
| parent | 7a93d5c38e5ee68376ca88d9e3f9841451b9efb1 (diff) | |
drm/msm: rework GEM_INFO ioctl
Prep work to add a way to get/set the GEM objects debug name.
Signed-off-by: Rob Clark <robdclark@gmail.com>
Diffstat (limited to 'drivers')
| -rw-r--r-- | drivers/gpu/drm/msm/msm_drv.c | 28 |
1 files changed, 19 insertions, 9 deletions
diff --git a/drivers/gpu/drm/msm/msm_drv.c b/drivers/gpu/drm/msm/msm_drv.c index a73187274b62..fe86c675d5b7 100644 --- a/drivers/gpu/drm/msm/msm_drv.c +++ b/drivers/gpu/drm/msm/msm_drv.c @@ -882,21 +882,31 @@ static int msm_ioctl_gem_info(struct drm_device *dev, void *data, struct drm_gem_object *obj; int ret = 0; - if (args->flags & ~MSM_INFO_FLAGS) + if (args->pad) return -EINVAL; + switch (args->info) { + case MSM_INFO_GET_OFFSET: + case MSM_INFO_GET_IOVA: + /* value returned as immediate, not pointer, so len==0: */ + if (args->len) + return -EINVAL; + break; + default: + return -EINVAL; + } + obj = drm_gem_object_lookup(file, args->handle); if (!obj) return -ENOENT; - if (args->flags & MSM_INFO_IOVA) { - uint64_t iova; - - ret = msm_ioctl_gem_info_iova(dev, obj, &iova); - if (!ret) - args->offset = iova; - } else { - args->offset = msm_gem_mmap_offset(obj); + switch (args->info) { + case MSM_INFO_GET_OFFSET: + args->value = msm_gem_mmap_offset(obj); + break; + case MSM_INFO_GET_IOVA: + ret = msm_ioctl_gem_info_iova(dev, obj, &args->value); + break; } drm_gem_object_put_unlocked(obj); |
