diff options
author | Christian König <christian.koenig@amd.com> | 2015-11-15 14:52:06 -0500 |
---|---|---|
committer | Alex Deucher <alexander.deucher@amd.com> | 2015-11-18 11:40:27 -0500 |
commit | ea89f8c9e8ba8a7b75446eef36917da50d2186d9 (patch) | |
tree | 8ab8a5dadae835605722e6d45efb3369a8afebe0 /drivers/gpu/drm/amd/amdgpu | |
parent | 8b4fb00b5db271bb1e117a078d5d7a161d8d8af1 (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.h | 1 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | 15 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c | 8 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c | 8 |
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 | ||
975 | void amdgpu_vm_manager_fini(struct amdgpu_device *adev); | ||
975 | int amdgpu_vm_init(struct amdgpu_device *adev, struct amdgpu_vm *vm); | 976 | int amdgpu_vm_init(struct amdgpu_device *adev, struct amdgpu_vm *vm); |
976 | void amdgpu_vm_fini(struct amdgpu_device *adev, struct amdgpu_vm *vm); | 977 | void amdgpu_vm_fini(struct amdgpu_device *adev, struct amdgpu_vm *vm); |
977 | struct amdgpu_bo_list_entry *amdgpu_vm_get_bos(struct amdgpu_device *adev, | 978 | struct 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 | */ | ||
1329 | void 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 | ||
962 | static int gmc_v7_0_sw_fini(void *handle) | 962 | static 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 | ||
1012 | static int gmc_v7_0_suspend(void *handle) | 1010 | static 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 | ||
981 | static int gmc_v8_0_sw_fini(void *handle) | 981 | static 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 | ||
1033 | static int gmc_v8_0_suspend(void *handle) | 1031 | static 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 | } |