Commit 7d86cf1a authored by David Herrmann's avatar David Herrmann

drm: inline drm_minor_get_id()

We can significantly simplify this helper by using plain multiplication.
Note that we converted the minor-type to an enum earlier so this didn't
work before.

We also fix a minor range-bug here: the limit argument of idr_alloc() is
*exclusive*, not inclusive, so we should use 64 instead of 63 as offset.
Signed-off-by: default avatarDavid Herrmann <dh.herrmann@gmail.com>
parent 1abbc437
...@@ -117,26 +117,6 @@ void drm_ut_debug_printk(unsigned int request_level, ...@@ -117,26 +117,6 @@ void drm_ut_debug_printk(unsigned int request_level,
} }
EXPORT_SYMBOL(drm_ut_debug_printk); EXPORT_SYMBOL(drm_ut_debug_printk);
static int drm_minor_get_id(struct drm_device *dev, int type)
{
int ret;
int base = 0, limit = 63;
if (type == DRM_MINOR_CONTROL) {
base += 64;
limit = base + 63;
} else if (type == DRM_MINOR_RENDER) {
base += 128;
limit = base + 63;
}
mutex_lock(&dev->struct_mutex);
ret = idr_alloc(&drm_minors_idr, NULL, base, limit, GFP_KERNEL);
mutex_unlock(&dev->struct_mutex);
return ret == -ENOSPC ? -EINVAL : ret;
}
struct drm_master *drm_master_create(struct drm_minor *minor) struct drm_master *drm_master_create(struct drm_minor *minor)
{ {
struct drm_master *master; struct drm_master *master;
...@@ -314,7 +294,12 @@ static int drm_minor_register(struct drm_device *dev, unsigned int type) ...@@ -314,7 +294,12 @@ static int drm_minor_register(struct drm_device *dev, unsigned int type)
if (!new_minor) if (!new_minor)
return 0; return 0;
minor_id = drm_minor_get_id(dev, type); minor_id = idr_alloc(&drm_minors_idr,
NULL,
64 * type,
64 * (type + 1),
GFP_KERNEL);
if (minor_id < 0) if (minor_id < 0)
return minor_id; return minor_id;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment