[PATCH 03/35] drm: Move drm_getmap into drm_bufs.c and give it a legacy prefix

Alex Deucher alexdeucher at gmail.com
Tue Apr 26 21:32:14 UTC 2016


On Tue, Apr 26, 2016 at 1:29 PM, Daniel Vetter <daniel.vetter at ffwll.ch> wrote:
> It belongs right next to the addmap and rmmap functions really. And
> for OCD consistency name it drm_legacy_getmap_ioctl.
>
> Signed-off-by: Daniel Vetter <daniel.vetter at intel.com>

Reviewed-by: Alex Deucher <alexander.deucher at amd.com>

> ---
>  drivers/gpu/drm/drm_bufs.c   | 52 ++++++++++++++++++++++++++++++++++++++++++
>  drivers/gpu/drm/drm_ioctl.c  | 54 +-------------------------------------------
>  drivers/gpu/drm/drm_legacy.h |  2 ++
>  3 files changed, 55 insertions(+), 53 deletions(-)
>
> diff --git a/drivers/gpu/drm/drm_bufs.c b/drivers/gpu/drm/drm_bufs.c
> index f1a204d253cc..d92db7007f62 100644
> --- a/drivers/gpu/drm/drm_bufs.c
> +++ b/drivers/gpu/drm/drm_bufs.c
> @@ -416,6 +416,58 @@ int drm_legacy_addmap_ioctl(struct drm_device *dev, void *data,
>         return 0;
>  }
>
> +/*
> + * Get a mapping information.
> + *
> + * \param inode device inode.
> + * \param file_priv DRM file private.
> + * \param cmd command.
> + * \param arg user argument, pointing to a drm_map structure.
> + *
> + * \return zero on success or a negative number on failure.
> + *
> + * Searches for the mapping with the specified offset and copies its information
> + * into userspace
> + */
> +int drm_legacy_getmap_ioctl(struct drm_device *dev, void *data,
> +                           struct drm_file *file_priv)
> +{
> +       struct drm_map *map = data;
> +       struct drm_map_list *r_list = NULL;
> +       struct list_head *list;
> +       int idx;
> +       int i;
> +
> +       idx = map->offset;
> +       if (idx < 0)
> +               return -EINVAL;
> +
> +       i = 0;
> +       mutex_lock(&dev->struct_mutex);
> +       list_for_each(list, &dev->maplist) {
> +               if (i == idx) {
> +                       r_list = list_entry(list, struct drm_map_list, head);
> +                       break;
> +               }
> +               i++;
> +       }
> +       if (!r_list || !r_list->map) {
> +               mutex_unlock(&dev->struct_mutex);
> +               return -EINVAL;
> +       }
> +
> +       map->offset = r_list->map->offset;
> +       map->size = r_list->map->size;
> +       map->type = r_list->map->type;
> +       map->flags = r_list->map->flags;
> +       map->handle = (void *)(unsigned long) r_list->user_token;
> +       map->mtrr = arch_phys_wc_index(r_list->map->mtrr);
> +
> +       mutex_unlock(&dev->struct_mutex);
> +
> +       return 0;
> +}
> +
>  /**
>   * Remove a map private from list and deallocate resources if the mapping
>   * isn't in use.
> diff --git a/drivers/gpu/drm/drm_ioctl.c b/drivers/gpu/drm/drm_ioctl.c
> index 3ecd1368c23a..24b941c3b561 100644
> --- a/drivers/gpu/drm/drm_ioctl.c
> +++ b/drivers/gpu/drm/drm_ioctl.c
> @@ -148,58 +148,6 @@ static int drm_set_busid(struct drm_device *dev, struct drm_file *file_priv)
>  }
>
>  /*
> - * Get a mapping information.
> - *
> - * \param inode device inode.
> - * \param file_priv DRM file private.
> - * \param cmd command.
> - * \param arg user argument, pointing to a drm_map structure.
> - *
> - * \return zero on success or a negative number on failure.
> - *
> - * Searches for the mapping with the specified offset and copies its information
> - * into userspace
> - */
> -static int drm_getmap(struct drm_device *dev, void *data,
> -              struct drm_file *file_priv)
> -{
> -       struct drm_map *map = data;
> -       struct drm_map_list *r_list = NULL;
> -       struct list_head *list;
> -       int idx;
> -       int i;
> -
> -       idx = map->offset;
> -       if (idx < 0)
> -               return -EINVAL;
> -
> -       i = 0;
> -       mutex_lock(&dev->struct_mutex);
> -       list_for_each(list, &dev->maplist) {
> -               if (i == idx) {
> -                       r_list = list_entry(list, struct drm_map_list, head);
> -                       break;
> -               }
> -               i++;
> -       }
> -       if (!r_list || !r_list->map) {
> -               mutex_unlock(&dev->struct_mutex);
> -               return -EINVAL;
> -       }
> -
> -       map->offset = r_list->map->offset;
> -       map->size = r_list->map->size;
> -       map->type = r_list->map->type;
> -       map->flags = r_list->map->flags;
> -       map->handle = (void *)(unsigned long) r_list->user_token;
> -       map->mtrr = arch_phys_wc_index(r_list->map->mtrr);
> -
> -       mutex_unlock(&dev->struct_mutex);
> -
> -       return 0;
> -}
> -
> -/*
>   * Get client information.
>   *
>   * \param inode device inode.
> @@ -556,7 +504,7 @@ static const struct drm_ioctl_desc drm_ioctls[] = {
>         DRM_IOCTL_DEF(DRM_IOCTL_GET_UNIQUE, drm_getunique, 0),
>         DRM_IOCTL_DEF(DRM_IOCTL_GET_MAGIC, drm_getmagic, 0),
>         DRM_IOCTL_DEF(DRM_IOCTL_IRQ_BUSID, drm_irq_by_busid, DRM_MASTER|DRM_ROOT_ONLY),
> -       DRM_IOCTL_DEF(DRM_IOCTL_GET_MAP, drm_getmap, DRM_UNLOCKED),
> +       DRM_IOCTL_DEF(DRM_IOCTL_GET_MAP, drm_legacy_getmap_ioctl, DRM_UNLOCKED),
>         DRM_IOCTL_DEF(DRM_IOCTL_GET_CLIENT, drm_getclient, DRM_UNLOCKED),
>         DRM_IOCTL_DEF(DRM_IOCTL_GET_STATS, drm_getstats, DRM_UNLOCKED),
>         DRM_IOCTL_DEF(DRM_IOCTL_GET_CAP, drm_getcap, DRM_UNLOCKED|DRM_RENDER_ALLOW),
> diff --git a/drivers/gpu/drm/drm_legacy.h b/drivers/gpu/drm/drm_legacy.h
> index 9b731786e4db..d3b6ee357a2b 100644
> --- a/drivers/gpu/drm/drm_legacy.h
> +++ b/drivers/gpu/drm/drm_legacy.h
> @@ -63,6 +63,8 @@ int drm_legacy_getsareactx(struct drm_device *d, void *v, struct drm_file *f);
>
>  #define DRM_MAP_HASH_OFFSET 0x10000000
>
> +int drm_legacy_getmap_ioctl(struct drm_device *dev, void *data,
> +                           struct drm_file *file_priv);
>  int drm_legacy_addmap_ioctl(struct drm_device *d, void *v, struct drm_file *f);
>  int drm_legacy_rmmap_ioctl(struct drm_device *d, void *v, struct drm_file *f);
>  int drm_legacy_addbufs(struct drm_device *d, void *v, struct drm_file *f);
> --
> 2.8.1
>
> _______________________________________________
> dri-devel mailing list
> dri-devel at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel


More information about the dri-devel mailing list