drm/amdgpu: remove vm->mutex
Signed-off-by: Chunming Zhou <David1.Zhou@amd.com> Reviewed-by: Christian König <christian.koenig@amd.com>
This commit is contained in:
parent
69b576a1bc
commit
e98c1b0de6
|
@ -929,8 +929,6 @@ struct amdgpu_vm_id {
|
||||||
};
|
};
|
||||||
|
|
||||||
struct amdgpu_vm {
|
struct amdgpu_vm {
|
||||||
struct mutex mutex;
|
|
||||||
|
|
||||||
struct rb_root va;
|
struct rb_root va;
|
||||||
|
|
||||||
/* protecting invalidated */
|
/* protecting invalidated */
|
||||||
|
|
|
@ -784,8 +784,6 @@ int amdgpu_cs_ioctl(struct drm_device *dev, void *data, struct drm_file *filp)
|
||||||
{
|
{
|
||||||
struct amdgpu_device *adev = dev->dev_private;
|
struct amdgpu_device *adev = dev->dev_private;
|
||||||
union drm_amdgpu_cs *cs = data;
|
union drm_amdgpu_cs *cs = data;
|
||||||
struct amdgpu_fpriv *fpriv = filp->driver_priv;
|
|
||||||
struct amdgpu_vm *vm = &fpriv->vm;
|
|
||||||
struct amdgpu_cs_parser parser = {};
|
struct amdgpu_cs_parser parser = {};
|
||||||
bool reserved_buffers = false;
|
bool reserved_buffers = false;
|
||||||
int i, r;
|
int i, r;
|
||||||
|
@ -803,7 +801,6 @@ int amdgpu_cs_ioctl(struct drm_device *dev, void *data, struct drm_file *filp)
|
||||||
r = amdgpu_cs_handle_lockup(adev, r);
|
r = amdgpu_cs_handle_lockup(adev, r);
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
mutex_lock(&vm->mutex);
|
|
||||||
r = amdgpu_cs_parser_relocs(&parser);
|
r = amdgpu_cs_parser_relocs(&parser);
|
||||||
if (r == -ENOMEM)
|
if (r == -ENOMEM)
|
||||||
DRM_ERROR("Not enough memory for command submission!\n");
|
DRM_ERROR("Not enough memory for command submission!\n");
|
||||||
|
@ -888,7 +885,6 @@ int amdgpu_cs_ioctl(struct drm_device *dev, void *data, struct drm_file *filp)
|
||||||
|
|
||||||
out:
|
out:
|
||||||
amdgpu_cs_parser_fini(&parser, r, reserved_buffers);
|
amdgpu_cs_parser_fini(&parser, r, reserved_buffers);
|
||||||
mutex_unlock(&vm->mutex);
|
|
||||||
r = amdgpu_cs_handle_lockup(adev, r);
|
r = amdgpu_cs_handle_lockup(adev, r);
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
|
@ -115,12 +115,9 @@ int amdgpu_gem_object_open(struct drm_gem_object *obj, struct drm_file *file_pri
|
||||||
struct amdgpu_vm *vm = &fpriv->vm;
|
struct amdgpu_vm *vm = &fpriv->vm;
|
||||||
struct amdgpu_bo_va *bo_va;
|
struct amdgpu_bo_va *bo_va;
|
||||||
int r;
|
int r;
|
||||||
mutex_lock(&vm->mutex);
|
|
||||||
r = amdgpu_bo_reserve(rbo, false);
|
r = amdgpu_bo_reserve(rbo, false);
|
||||||
if (r) {
|
if (r)
|
||||||
mutex_unlock(&vm->mutex);
|
|
||||||
return r;
|
return r;
|
||||||
}
|
|
||||||
|
|
||||||
bo_va = amdgpu_vm_bo_find(vm, rbo);
|
bo_va = amdgpu_vm_bo_find(vm, rbo);
|
||||||
if (!bo_va) {
|
if (!bo_va) {
|
||||||
|
@ -129,7 +126,6 @@ int amdgpu_gem_object_open(struct drm_gem_object *obj, struct drm_file *file_pri
|
||||||
++bo_va->ref_count;
|
++bo_va->ref_count;
|
||||||
}
|
}
|
||||||
amdgpu_bo_unreserve(rbo);
|
amdgpu_bo_unreserve(rbo);
|
||||||
mutex_unlock(&vm->mutex);
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -142,10 +138,8 @@ void amdgpu_gem_object_close(struct drm_gem_object *obj,
|
||||||
struct amdgpu_vm *vm = &fpriv->vm;
|
struct amdgpu_vm *vm = &fpriv->vm;
|
||||||
struct amdgpu_bo_va *bo_va;
|
struct amdgpu_bo_va *bo_va;
|
||||||
int r;
|
int r;
|
||||||
mutex_lock(&vm->mutex);
|
|
||||||
r = amdgpu_bo_reserve(rbo, true);
|
r = amdgpu_bo_reserve(rbo, true);
|
||||||
if (r) {
|
if (r) {
|
||||||
mutex_unlock(&vm->mutex);
|
|
||||||
dev_err(adev->dev, "leaking bo va because "
|
dev_err(adev->dev, "leaking bo va because "
|
||||||
"we fail to reserve bo (%d)\n", r);
|
"we fail to reserve bo (%d)\n", r);
|
||||||
return;
|
return;
|
||||||
|
@ -157,7 +151,6 @@ void amdgpu_gem_object_close(struct drm_gem_object *obj,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
amdgpu_bo_unreserve(rbo);
|
amdgpu_bo_unreserve(rbo);
|
||||||
mutex_unlock(&vm->mutex);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int amdgpu_gem_handle_lockup(struct amdgpu_device *adev, int r)
|
static int amdgpu_gem_handle_lockup(struct amdgpu_device *adev, int r)
|
||||||
|
@ -553,7 +546,6 @@ int amdgpu_gem_va_ioctl(struct drm_device *dev, void *data,
|
||||||
gobj = drm_gem_object_lookup(dev, filp, args->handle);
|
gobj = drm_gem_object_lookup(dev, filp, args->handle);
|
||||||
if (gobj == NULL)
|
if (gobj == NULL)
|
||||||
return -ENOENT;
|
return -ENOENT;
|
||||||
mutex_lock(&fpriv->vm.mutex);
|
|
||||||
rbo = gem_to_amdgpu_bo(gobj);
|
rbo = gem_to_amdgpu_bo(gobj);
|
||||||
INIT_LIST_HEAD(&list);
|
INIT_LIST_HEAD(&list);
|
||||||
INIT_LIST_HEAD(&duplicates);
|
INIT_LIST_HEAD(&duplicates);
|
||||||
|
@ -568,7 +560,6 @@ int amdgpu_gem_va_ioctl(struct drm_device *dev, void *data,
|
||||||
}
|
}
|
||||||
r = ttm_eu_reserve_buffers(&ticket, &list, true, &duplicates);
|
r = ttm_eu_reserve_buffers(&ticket, &list, true, &duplicates);
|
||||||
if (r) {
|
if (r) {
|
||||||
mutex_unlock(&fpriv->vm.mutex);
|
|
||||||
drm_gem_object_unreference_unlocked(gobj);
|
drm_gem_object_unreference_unlocked(gobj);
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
@ -577,7 +568,6 @@ int amdgpu_gem_va_ioctl(struct drm_device *dev, void *data,
|
||||||
if (!bo_va) {
|
if (!bo_va) {
|
||||||
ttm_eu_backoff_reservation(&ticket, &list);
|
ttm_eu_backoff_reservation(&ticket, &list);
|
||||||
drm_gem_object_unreference_unlocked(gobj);
|
drm_gem_object_unreference_unlocked(gobj);
|
||||||
mutex_unlock(&fpriv->vm.mutex);
|
|
||||||
return -ENOENT;
|
return -ENOENT;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -602,7 +592,7 @@ int amdgpu_gem_va_ioctl(struct drm_device *dev, void *data,
|
||||||
ttm_eu_backoff_reservation(&ticket, &list);
|
ttm_eu_backoff_reservation(&ticket, &list);
|
||||||
if (!r && !(args->flags & AMDGPU_VM_DELAY_UPDATE))
|
if (!r && !(args->flags & AMDGPU_VM_DELAY_UPDATE))
|
||||||
amdgpu_gem_va_update_vm(adev, bo_va, args->operation);
|
amdgpu_gem_va_update_vm(adev, bo_va, args->operation);
|
||||||
mutex_unlock(&fpriv->vm.mutex);
|
|
||||||
drm_gem_object_unreference_unlocked(gobj);
|
drm_gem_object_unreference_unlocked(gobj);
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1241,7 +1241,6 @@ int amdgpu_vm_init(struct amdgpu_device *adev, struct amdgpu_vm *vm)
|
||||||
vm->ids[i].id = 0;
|
vm->ids[i].id = 0;
|
||||||
vm->ids[i].flushed_updates = NULL;
|
vm->ids[i].flushed_updates = NULL;
|
||||||
}
|
}
|
||||||
mutex_init(&vm->mutex);
|
|
||||||
vm->va = RB_ROOT;
|
vm->va = RB_ROOT;
|
||||||
spin_lock_init(&vm->status_lock);
|
spin_lock_init(&vm->status_lock);
|
||||||
INIT_LIST_HEAD(&vm->invalidated);
|
INIT_LIST_HEAD(&vm->invalidated);
|
||||||
|
@ -1325,7 +1324,6 @@ void amdgpu_vm_fini(struct amdgpu_device *adev, struct amdgpu_vm *vm)
|
||||||
fence_put(vm->ids[i].flushed_updates);
|
fence_put(vm->ids[i].flushed_updates);
|
||||||
}
|
}
|
||||||
|
|
||||||
mutex_destroy(&vm->mutex);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in New Issue