drm/amdgpu: move VM manager clean into the VM code again
It's not a good idea to duplicate that code. Signed-off-by: Christian König <christian.koenig@amd.com> Reviewed-by: Chunming Zhou <davdi1.zhou@amd.com> Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
parent
8b4fb00b5d
commit
ea89f8c9e8
|
@ -972,6 +972,7 @@ struct amdgpu_vm_manager {
|
||||||
struct amdgpu_ring *vm_pte_funcs_ring;
|
struct amdgpu_ring *vm_pte_funcs_ring;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
void amdgpu_vm_manager_fini(struct amdgpu_device *adev);
|
||||||
int amdgpu_vm_init(struct amdgpu_device *adev, struct amdgpu_vm *vm);
|
int amdgpu_vm_init(struct amdgpu_device *adev, struct amdgpu_vm *vm);
|
||||||
void amdgpu_vm_fini(struct amdgpu_device *adev, struct amdgpu_vm *vm);
|
void amdgpu_vm_fini(struct amdgpu_device *adev, struct amdgpu_vm *vm);
|
||||||
struct amdgpu_bo_list_entry *amdgpu_vm_get_bos(struct amdgpu_device *adev,
|
struct amdgpu_bo_list_entry *amdgpu_vm_get_bos(struct amdgpu_device *adev,
|
||||||
|
|
|
@ -1318,3 +1318,18 @@ void amdgpu_vm_fini(struct amdgpu_device *adev, struct amdgpu_vm *vm)
|
||||||
|
|
||||||
mutex_destroy(&vm->mutex);
|
mutex_destroy(&vm->mutex);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* amdgpu_vm_manager_fini - cleanup VM manager
|
||||||
|
*
|
||||||
|
* @adev: amdgpu_device pointer
|
||||||
|
*
|
||||||
|
* Cleanup the VM manager and free resources.
|
||||||
|
*/
|
||||||
|
void amdgpu_vm_manager_fini(struct amdgpu_device *adev)
|
||||||
|
{
|
||||||
|
unsigned i;
|
||||||
|
|
||||||
|
for (i = 0; i < AMDGPU_NUM_VM; ++i)
|
||||||
|
fence_put(adev->vm_manager.active[i]);
|
||||||
|
}
|
||||||
|
|
|
@ -961,12 +961,10 @@ static int gmc_v7_0_sw_init(void *handle)
|
||||||
|
|
||||||
static int gmc_v7_0_sw_fini(void *handle)
|
static int gmc_v7_0_sw_fini(void *handle)
|
||||||
{
|
{
|
||||||
int i;
|
|
||||||
struct amdgpu_device *adev = (struct amdgpu_device *)handle;
|
struct amdgpu_device *adev = (struct amdgpu_device *)handle;
|
||||||
|
|
||||||
if (adev->vm_manager.enabled) {
|
if (adev->vm_manager.enabled) {
|
||||||
for (i = 0; i < AMDGPU_NUM_VM; ++i)
|
amdgpu_vm_manager_fini(adev);
|
||||||
fence_put(adev->vm_manager.active[i]);
|
|
||||||
gmc_v7_0_vm_fini(adev);
|
gmc_v7_0_vm_fini(adev);
|
||||||
adev->vm_manager.enabled = false;
|
adev->vm_manager.enabled = false;
|
||||||
}
|
}
|
||||||
|
@ -1011,12 +1009,10 @@ static int gmc_v7_0_hw_fini(void *handle)
|
||||||
|
|
||||||
static int gmc_v7_0_suspend(void *handle)
|
static int gmc_v7_0_suspend(void *handle)
|
||||||
{
|
{
|
||||||
int i;
|
|
||||||
struct amdgpu_device *adev = (struct amdgpu_device *)handle;
|
struct amdgpu_device *adev = (struct amdgpu_device *)handle;
|
||||||
|
|
||||||
if (adev->vm_manager.enabled) {
|
if (adev->vm_manager.enabled) {
|
||||||
for (i = 0; i < AMDGPU_NUM_VM; ++i)
|
amdgpu_vm_manager_fini(adev);
|
||||||
fence_put(adev->vm_manager.active[i]);
|
|
||||||
gmc_v7_0_vm_fini(adev);
|
gmc_v7_0_vm_fini(adev);
|
||||||
adev->vm_manager.enabled = false;
|
adev->vm_manager.enabled = false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -980,12 +980,10 @@ static int gmc_v8_0_sw_init(void *handle)
|
||||||
|
|
||||||
static int gmc_v8_0_sw_fini(void *handle)
|
static int gmc_v8_0_sw_fini(void *handle)
|
||||||
{
|
{
|
||||||
int i;
|
|
||||||
struct amdgpu_device *adev = (struct amdgpu_device *)handle;
|
struct amdgpu_device *adev = (struct amdgpu_device *)handle;
|
||||||
|
|
||||||
if (adev->vm_manager.enabled) {
|
if (adev->vm_manager.enabled) {
|
||||||
for (i = 0; i < AMDGPU_NUM_VM; ++i)
|
amdgpu_vm_manager_fini(adev);
|
||||||
fence_put(adev->vm_manager.active[i]);
|
|
||||||
gmc_v8_0_vm_fini(adev);
|
gmc_v8_0_vm_fini(adev);
|
||||||
adev->vm_manager.enabled = false;
|
adev->vm_manager.enabled = false;
|
||||||
}
|
}
|
||||||
|
@ -1032,12 +1030,10 @@ static int gmc_v8_0_hw_fini(void *handle)
|
||||||
|
|
||||||
static int gmc_v8_0_suspend(void *handle)
|
static int gmc_v8_0_suspend(void *handle)
|
||||||
{
|
{
|
||||||
int i;
|
|
||||||
struct amdgpu_device *adev = (struct amdgpu_device *)handle;
|
struct amdgpu_device *adev = (struct amdgpu_device *)handle;
|
||||||
|
|
||||||
if (adev->vm_manager.enabled) {
|
if (adev->vm_manager.enabled) {
|
||||||
for (i = 0; i < AMDGPU_NUM_VM; ++i)
|
amdgpu_vm_manager_fini(adev);
|
||||||
fence_put(adev->vm_manager.active[i]);
|
|
||||||
gmc_v8_0_vm_fini(adev);
|
gmc_v8_0_vm_fini(adev);
|
||||||
adev->vm_manager.enabled = false;
|
adev->vm_manager.enabled = false;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue