|
@@ -53,10 +53,8 @@ vc4_free_hang_state(struct drm_device *dev, struct vc4_hang_state *state)
|
|
|
{
|
|
|
unsigned int i;
|
|
|
|
|
|
- mutex_lock(&dev->struct_mutex);
|
|
|
for (i = 0; i < state->user_state.bo_count; i++)
|
|
|
- drm_gem_object_unreference(state->bo[i]);
|
|
|
- mutex_unlock(&dev->struct_mutex);
|
|
|
+ drm_gem_object_unreference_unlocked(state->bo[i]);
|
|
|
|
|
|
kfree(state);
|
|
|
}
|
|
@@ -687,11 +685,9 @@ vc4_complete_exec(struct drm_device *dev, struct vc4_exec_info *exec)
|
|
|
struct vc4_dev *vc4 = to_vc4_dev(dev);
|
|
|
unsigned i;
|
|
|
|
|
|
- /* Need the struct lock for drm_gem_object_unreference(). */
|
|
|
- mutex_lock(&dev->struct_mutex);
|
|
|
if (exec->bo) {
|
|
|
for (i = 0; i < exec->bo_count; i++)
|
|
|
- drm_gem_object_unreference(&exec->bo[i]->base);
|
|
|
+ drm_gem_object_unreference_unlocked(&exec->bo[i]->base);
|
|
|
kfree(exec->bo);
|
|
|
}
|
|
|
|
|
@@ -699,9 +695,8 @@ vc4_complete_exec(struct drm_device *dev, struct vc4_exec_info *exec)
|
|
|
struct vc4_bo *bo = list_first_entry(&exec->unref_list,
|
|
|
struct vc4_bo, unref_head);
|
|
|
list_del(&bo->unref_head);
|
|
|
- drm_gem_object_unreference(&bo->base.base);
|
|
|
+ drm_gem_object_unreference_unlocked(&bo->base.base);
|
|
|
}
|
|
|
- mutex_unlock(&dev->struct_mutex);
|
|
|
|
|
|
mutex_lock(&vc4->power_lock);
|
|
|
if (--vc4->power_refcount == 0)
|