Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ea89f8c9 authored by Christian König's avatar Christian König Committed by Alex Deucher
Browse files

drm/amdgpu: move VM manager clean into the VM code again



It's not a good idea to duplicate that code.

Signed-off-by: default avatarChristian König <christian.koenig@amd.com>
Reviewed-by: default avatarChunming Zhou <davdi1.zhou@amd.com>
Reviewed-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 8b4fb00b
Loading
Loading
Loading
Loading
+1 −0
Original line number Original line Diff line number Diff line
@@ -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,
+15 −0
Original line number Original line Diff line number Diff line
@@ -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]);
}
+2 −6
Original line number Original line Diff line number Diff line
@@ -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;
	}
	}
+2 −6
Original line number Original line Diff line number Diff line
@@ -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;
	}
	}