mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2025-04-19 02:08:23 +07:00
drm: Move drm_getmap into drm_bufs.c and give it a legacy prefix
It belongs right next to the addmap and rmmap functions really. And for OCD consistency name it drm_legacy_getmap_ioctl. Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk> Reviewed-by: Alex Deucher <alexander.deucher@amd.com> Signed-off-by: Daniel Vetter <daniel.vetter@intel.com> Link: http://patchwork.freedesktop.org/patch/msgid/1461691808-12414-4-git-send-email-daniel.vetter@ffwll.ch
This commit is contained in:
parent
68dfbebab1
commit
ec1f52efc0
@ -416,6 +416,58 @@ int drm_legacy_addmap_ioctl(struct drm_device *dev, void *data,
|
|||||||
return 0;
|
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
|
* Remove a map private from list and deallocate resources if the mapping
|
||||||
* isn't in use.
|
* isn't in use.
|
||||||
|
@ -149,58 +149,6 @@ static int drm_set_busid(struct drm_device *dev, struct drm_file *file_priv)
|
|||||||
return 0;
|
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
|
|
||||||
*/
|
|
||||||
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.
|
* Get client information.
|
||||||
*
|
*
|
||||||
@ -558,7 +506,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_UNIQUE, drm_getunique, 0),
|
||||||
DRM_IOCTL_DEF(DRM_IOCTL_GET_MAGIC, drm_getmagic, 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_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_CLIENT, drm_getclient, DRM_UNLOCKED),
|
||||||
DRM_IOCTL_DEF(DRM_IOCTL_GET_STATS, drm_getstats, 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),
|
DRM_IOCTL_DEF(DRM_IOCTL_GET_CAP, drm_getcap, DRM_UNLOCKED|DRM_RENDER_ALLOW),
|
||||||
|
@ -63,6 +63,8 @@ int drm_legacy_getsareactx(struct drm_device *d, void *v, struct drm_file *f);
|
|||||||
|
|
||||||
#define DRM_MAP_HASH_OFFSET 0x10000000
|
#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_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_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);
|
int drm_legacy_addbufs(struct drm_device *d, void *v, struct drm_file *f);
|
||||||
|
Loading…
Reference in New Issue
Block a user