mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
synced 2025-01-13 01:08:50 +00:00
qxl: update to new idr interfaces.
Signed-off-by: Dave Airlie <airlied@redhat.com>
This commit is contained in:
parent
d2dbaaf626
commit
307b9c0227
@ -435,22 +435,18 @@ void qxl_io_monitors_config(struct qxl_device *qdev)
|
||||
int qxl_surface_id_alloc(struct qxl_device *qdev,
|
||||
struct qxl_bo *surf)
|
||||
{
|
||||
uint32_t handle = -ENOMEM;
|
||||
uint32_t handle;
|
||||
int idr_ret;
|
||||
int count = 0;
|
||||
again:
|
||||
if (idr_pre_get(&qdev->surf_id_idr, GFP_ATOMIC) == 0) {
|
||||
DRM_ERROR("Out of memory for surf idr\n");
|
||||
kfree(surf);
|
||||
goto alloc_fail;
|
||||
}
|
||||
|
||||
idr_preload(GFP_ATOMIC);
|
||||
spin_lock(&qdev->surf_id_idr_lock);
|
||||
idr_ret = idr_get_new_above(&qdev->surf_id_idr, NULL, 1, &handle);
|
||||
idr_ret = idr_alloc(&qdev->surf_id_idr, NULL, 1, 0, GFP_NOWAIT);
|
||||
spin_unlock(&qdev->surf_id_idr_lock);
|
||||
|
||||
if (idr_ret == -EAGAIN)
|
||||
goto again;
|
||||
idr_preload_end();
|
||||
if (idr_ret < 0)
|
||||
return idr_ret;
|
||||
handle = idr_ret;
|
||||
|
||||
if (handle >= qdev->rom->n_surfaces) {
|
||||
count++;
|
||||
@ -465,7 +461,6 @@ again:
|
||||
spin_lock(&qdev->surf_id_idr_lock);
|
||||
qdev->last_alloced_surf_id = handle;
|
||||
spin_unlock(&qdev->surf_id_idr_lock);
|
||||
alloc_fail:
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -43,7 +43,7 @@ qxl_release_alloc(struct qxl_device *qdev, int type,
|
||||
struct qxl_release **ret)
|
||||
{
|
||||
struct qxl_release *release;
|
||||
int handle = 0;
|
||||
int handle;
|
||||
size_t size = sizeof(*release);
|
||||
int idr_ret;
|
||||
|
||||
@ -56,19 +56,16 @@ qxl_release_alloc(struct qxl_device *qdev, int type,
|
||||
release->bo_count = 0;
|
||||
release->release_offset = 0;
|
||||
release->surface_release_id = 0;
|
||||
again:
|
||||
if (idr_pre_get(&qdev->release_idr, GFP_KERNEL) == 0) {
|
||||
DRM_ERROR("Out of memory for release idr\n");
|
||||
kfree(release);
|
||||
goto release_fail;
|
||||
}
|
||||
|
||||
idr_preload(GFP_KERNEL);
|
||||
spin_lock(&qdev->release_idr_lock);
|
||||
idr_ret = idr_get_new_above(&qdev->release_idr, release, 1, &handle);
|
||||
idr_ret = idr_alloc(&qdev->release_idr, release, 1, 0, GFP_NOWAIT);
|
||||
spin_unlock(&qdev->release_idr_lock);
|
||||
if (idr_ret == -EAGAIN)
|
||||
goto again;
|
||||
if (ret)
|
||||
*ret = release;
|
||||
idr_preload_end();
|
||||
handle = idr_ret;
|
||||
if (idr_ret < 0)
|
||||
goto release_fail;
|
||||
*ret = release;
|
||||
QXL_INFO(qdev, "allocated release %lld\n", handle);
|
||||
release->id = handle;
|
||||
release_fail:
|
||||
|
Loading…
x
Reference in New Issue
Block a user