|
@@ -69,9 +69,7 @@ int radeon_gem_object_create(struct radeon_device *rdev, int size,
|
|
|
if (r != -ERESTARTSYS)
|
|
|
DRM_ERROR("Failed to allocate GEM object (%d, %d, %u, %d)\n",
|
|
|
size, initial_domain, alignment, r);
|
|
|
- mutex_lock(&rdev->ddev->struct_mutex);
|
|
|
- drm_gem_object_unreference(gobj);
|
|
|
- mutex_unlock(&rdev->ddev->struct_mutex);
|
|
|
+ drm_gem_object_unreference_unlocked(gobj);
|
|
|
return r;
|
|
|
}
|
|
|
gobj->driver_private = robj;
|
|
@@ -202,14 +200,10 @@ int radeon_gem_create_ioctl(struct drm_device *dev, void *data,
|
|
|
}
|
|
|
r = drm_gem_handle_create(filp, gobj, &handle);
|
|
|
if (r) {
|
|
|
- mutex_lock(&dev->struct_mutex);
|
|
|
- drm_gem_object_unreference(gobj);
|
|
|
- mutex_unlock(&dev->struct_mutex);
|
|
|
+ drm_gem_object_unreference_unlocked(gobj);
|
|
|
return r;
|
|
|
}
|
|
|
- mutex_lock(&dev->struct_mutex);
|
|
|
- drm_gem_object_handle_unreference(gobj);
|
|
|
- mutex_unlock(&dev->struct_mutex);
|
|
|
+ drm_gem_object_handle_unreference_unlocked(gobj);
|
|
|
args->handle = handle;
|
|
|
return 0;
|
|
|
}
|
|
@@ -236,9 +230,7 @@ int radeon_gem_set_domain_ioctl(struct drm_device *dev, void *data,
|
|
|
|
|
|
r = radeon_gem_set_domain(gobj, args->read_domains, args->write_domain);
|
|
|
|
|
|
- mutex_lock(&dev->struct_mutex);
|
|
|
- drm_gem_object_unreference(gobj);
|
|
|
- mutex_unlock(&dev->struct_mutex);
|
|
|
+ drm_gem_object_unreference_unlocked(gobj);
|
|
|
return r;
|
|
|
}
|
|
|
|
|
@@ -255,9 +247,7 @@ int radeon_gem_mmap_ioctl(struct drm_device *dev, void *data,
|
|
|
}
|
|
|
robj = gobj->driver_private;
|
|
|
args->addr_ptr = radeon_bo_mmap_offset(robj);
|
|
|
- mutex_lock(&dev->struct_mutex);
|
|
|
- drm_gem_object_unreference(gobj);
|
|
|
- mutex_unlock(&dev->struct_mutex);
|
|
|
+ drm_gem_object_unreference_unlocked(gobj);
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
@@ -288,9 +278,7 @@ int radeon_gem_busy_ioctl(struct drm_device *dev, void *data,
|
|
|
default:
|
|
|
break;
|
|
|
}
|
|
|
- mutex_lock(&dev->struct_mutex);
|
|
|
- drm_gem_object_unreference(gobj);
|
|
|
- mutex_unlock(&dev->struct_mutex);
|
|
|
+ drm_gem_object_unreference_unlocked(gobj);
|
|
|
return r;
|
|
|
}
|
|
|
|
|
@@ -311,9 +299,7 @@ int radeon_gem_wait_idle_ioctl(struct drm_device *dev, void *data,
|
|
|
/* callback hw specific functions if any */
|
|
|
if (robj->rdev->asic->ioctl_wait_idle)
|
|
|
robj->rdev->asic->ioctl_wait_idle(robj->rdev, robj);
|
|
|
- mutex_lock(&dev->struct_mutex);
|
|
|
- drm_gem_object_unreference(gobj);
|
|
|
- mutex_unlock(&dev->struct_mutex);
|
|
|
+ drm_gem_object_unreference_unlocked(gobj);
|
|
|
return r;
|
|
|
}
|
|
|
|
|
@@ -331,9 +317,7 @@ int radeon_gem_set_tiling_ioctl(struct drm_device *dev, void *data,
|
|
|
return -EINVAL;
|
|
|
robj = gobj->driver_private;
|
|
|
r = radeon_bo_set_tiling_flags(robj, args->tiling_flags, args->pitch);
|
|
|
- mutex_lock(&dev->struct_mutex);
|
|
|
- drm_gem_object_unreference(gobj);
|
|
|
- mutex_unlock(&dev->struct_mutex);
|
|
|
+ drm_gem_object_unreference_unlocked(gobj);
|
|
|
return r;
|
|
|
}
|
|
|
|
|
@@ -356,8 +340,6 @@ int radeon_gem_get_tiling_ioctl(struct drm_device *dev, void *data,
|
|
|
radeon_bo_get_tiling_flags(rbo, &args->tiling_flags, &args->pitch);
|
|
|
radeon_bo_unreserve(rbo);
|
|
|
out:
|
|
|
- mutex_lock(&dev->struct_mutex);
|
|
|
- drm_gem_object_unreference(gobj);
|
|
|
- mutex_unlock(&dev->struct_mutex);
|
|
|
+ drm_gem_object_unreference_unlocked(gobj);
|
|
|
return r;
|
|
|
}
|