aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/amd/amdgpu
diff options
context:
space:
mode:
authorChristian König <christian.koenig@amd.com>2015-11-15 14:52:06 -0500
committerAlex Deucher <alexander.deucher@amd.com>2015-11-18 11:40:27 -0500
commitea89f8c9e8ba8a7b75446eef36917da50d2186d9 (patch)
tree8ab8a5dadae835605722e6d45efb3369a8afebe0 /drivers/gpu/drm/amd/amdgpu
parent8b4fb00b5db271bb1e117a078d5d7a161d8d8af1 (diff)
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>
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu')
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu.h1
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c15
-rw-r--r--drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c8
-rw-r--r--drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c8
4 files changed, 20 insertions, 12 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
index d1e16726e225..beb74854a8a3 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
@@ -972,6 +972,7 @@ struct amdgpu_vm_manager {
972 struct amdgpu_ring *vm_pte_funcs_ring; 972 struct amdgpu_ring *vm_pte_funcs_ring;
973}; 973};
974 974
975void amdgpu_vm_manager_fini(struct amdgpu_device *adev);
975int amdgpu_vm_init(struct amdgpu_device *adev, struct amdgpu_vm *vm); 976int amdgpu_vm_init(struct amdgpu_device *adev, struct amdgpu_vm *vm);
976void amdgpu_vm_fini(struct amdgpu_device *adev, struct amdgpu_vm *vm); 977void amdgpu_vm_fini(struct amdgpu_device *adev, struct amdgpu_vm *vm);
977struct amdgpu_bo_list_entry *amdgpu_vm_get_bos(struct amdgpu_device *adev, 978struct amdgpu_bo_list_entry *amdgpu_vm_get_bos(struct amdgpu_device *adev,
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
index a9fcc995d27e..6bb209bc0d36 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
@@ -1318,3 +1318,18 @@ void amdgpu_vm_fini(struct amdgpu_device *adev, struct amdgpu_vm *vm)
1318 1318
1319 mutex_destroy(&vm->mutex); 1319 mutex_destroy(&vm->mutex);
1320} 1320}
1321
1322/**
1323 * amdgpu_vm_manager_fini - cleanup VM manager
1324 *
1325 * @adev: amdgpu_device pointer
1326 *
1327 * Cleanup the VM manager and free resources.
1328 */
1329void amdgpu_vm_manager_fini(struct amdgpu_device *adev)
1330{
1331 unsigned i;
1332
1333 for (i = 0; i < AMDGPU_NUM_VM; ++i)
1334 fence_put(adev->vm_manager.active[i]);
1335}
diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c b/drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c
index 98ee39001c45..7427d8cd4c43 100644
--- a/drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c
@@ -961,12 +961,10 @@ static int gmc_v7_0_sw_init(void *handle)
961 961
962static int gmc_v7_0_sw_fini(void *handle) 962static int gmc_v7_0_sw_fini(void *handle)
963{ 963{
964 int i;
965 struct amdgpu_device *adev = (struct amdgpu_device *)handle; 964 struct amdgpu_device *adev = (struct amdgpu_device *)handle;
966 965
967 if (adev->vm_manager.enabled) { 966 if (adev->vm_manager.enabled) {
968 for (i = 0; i < AMDGPU_NUM_VM; ++i) 967 amdgpu_vm_manager_fini(adev);
969 fence_put(adev->vm_manager.active[i]);
970 gmc_v7_0_vm_fini(adev); 968 gmc_v7_0_vm_fini(adev);
971 adev->vm_manager.enabled = false; 969 adev->vm_manager.enabled = false;
972 } 970 }
@@ -1011,12 +1009,10 @@ static int gmc_v7_0_hw_fini(void *handle)
1011 1009
1012static int gmc_v7_0_suspend(void *handle) 1010static int gmc_v7_0_suspend(void *handle)
1013{ 1011{
1014 int i;
1015 struct amdgpu_device *adev = (struct amdgpu_device *)handle; 1012 struct amdgpu_device *adev = (struct amdgpu_device *)handle;
1016 1013
1017 if (adev->vm_manager.enabled) { 1014 if (adev->vm_manager.enabled) {
1018 for (i = 0; i < AMDGPU_NUM_VM; ++i) 1015 amdgpu_vm_manager_fini(adev);
1019 fence_put(adev->vm_manager.active[i]);
1020 gmc_v7_0_vm_fini(adev); 1016 gmc_v7_0_vm_fini(adev);
1021 adev->vm_manager.enabled = false; 1017 adev->vm_manager.enabled = false;
1022 } 1018 }
diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c b/drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c
index c9209b45d901..cb0e50ebb528 100644
--- a/drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c
@@ -980,12 +980,10 @@ static int gmc_v8_0_sw_init(void *handle)
980 980
981static int gmc_v8_0_sw_fini(void *handle) 981static int gmc_v8_0_sw_fini(void *handle)
982{ 982{
983 int i;
984 struct amdgpu_device *adev = (struct amdgpu_device *)handle; 983 struct amdgpu_device *adev = (struct amdgpu_device *)handle;
985 984
986 if (adev->vm_manager.enabled) { 985 if (adev->vm_manager.enabled) {
987 for (i = 0; i < AMDGPU_NUM_VM; ++i) 986 amdgpu_vm_manager_fini(adev);
988 fence_put(adev->vm_manager.active[i]);
989 gmc_v8_0_vm_fini(adev); 987 gmc_v8_0_vm_fini(adev);
990 adev->vm_manager.enabled = false; 988 adev->vm_manager.enabled = false;
991 } 989 }
@@ -1032,12 +1030,10 @@ static int gmc_v8_0_hw_fini(void *handle)
1032 1030
1033static int gmc_v8_0_suspend(void *handle) 1031static int gmc_v8_0_suspend(void *handle)
1034{ 1032{
1035 int i;
1036 struct amdgpu_device *adev = (struct amdgpu_device *)handle; 1033 struct amdgpu_device *adev = (struct amdgpu_device *)handle;
1037 1034
1038 if (adev->vm_manager.enabled) { 1035 if (adev->vm_manager.enabled) {
1039 for (i = 0; i < AMDGPU_NUM_VM; ++i) 1036 amdgpu_vm_manager_fini(adev);
1040 fence_put(adev->vm_manager.active[i]);
1041 gmc_v8_0_vm_fini(adev); 1037 gmc_v8_0_vm_fini(adev);
1042 adev->vm_manager.enabled = false; 1038 adev->vm_manager.enabled = false;
1043 } 1039 }