diff options
author | Monk Liu <Monk.Liu@amd.com> | 2017-11-14 03:52:14 -0500 |
---|---|---|
committer | Alex Deucher <alexander.deucher@amd.com> | 2017-12-06 12:47:51 -0500 |
commit | 84e5b5161e7159bcf24dfeed9f985bd86e354ea8 (patch) | |
tree | 39b58d34375f10352b20ea60463eea2bdb084e08 /drivers/gpu/drm/amd/amdgpu | |
parent | 9921167d9086d666217fd98be5a28bb43c193a34 (diff) |
drm/amdgpu:free CSA in unified place
instead of doing it in each GFX ip's sw_fini
Signed-off-by: Monk Liu <Monk.Liu@amd.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu')
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 1 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c | 6 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_virt.h | 1 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c | 1 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c | 1 |
5 files changed, 8 insertions, 2 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c index 29c81c387420..fdce06b5b2b8 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | |||
@@ -1893,6 +1893,7 @@ static int amdgpu_fini(struct amdgpu_device *adev) | |||
1893 | if (!adev->ip_blocks[i].status.hw) | 1893 | if (!adev->ip_blocks[i].status.hw) |
1894 | continue; | 1894 | continue; |
1895 | if (adev->ip_blocks[i].version->type == AMD_IP_BLOCK_TYPE_GMC) { | 1895 | if (adev->ip_blocks[i].version->type == AMD_IP_BLOCK_TYPE_GMC) { |
1896 | amdgpu_free_static_csa(adev); | ||
1896 | amdgpu_wb_fini(adev); | 1897 | amdgpu_wb_fini(adev); |
1897 | amdgpu_vram_scratch_fini(adev); | 1898 | amdgpu_vram_scratch_fini(adev); |
1898 | } | 1899 | } |
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c index 0769cb935318..e7dfb7b44b4b 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c | |||
@@ -47,6 +47,12 @@ int amdgpu_allocate_static_csa(struct amdgpu_device *adev) | |||
47 | return 0; | 47 | return 0; |
48 | } | 48 | } |
49 | 49 | ||
50 | void amdgpu_free_static_csa(struct amdgpu_device *adev) { | ||
51 | amdgpu_bo_free_kernel(&adev->virt.csa_obj, | ||
52 | &adev->virt.csa_vmid0_addr, | ||
53 | NULL); | ||
54 | } | ||
55 | |||
50 | /* | 56 | /* |
51 | * amdgpu_map_static_csa should be called during amdgpu_vm_init | 57 | * amdgpu_map_static_csa should be called during amdgpu_vm_init |
52 | * it maps virtual address "AMDGPU_VA_RESERVED_SIZE - AMDGPU_CSA_SIZE" | 58 | * it maps virtual address "AMDGPU_VA_RESERVED_SIZE - AMDGPU_CSA_SIZE" |
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.h index f77d116c7a1c..6a83425aa9ed 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.h +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.h | |||
@@ -283,6 +283,7 @@ bool amdgpu_virt_mmio_blocked(struct amdgpu_device *adev); | |||
283 | int amdgpu_allocate_static_csa(struct amdgpu_device *adev); | 283 | int amdgpu_allocate_static_csa(struct amdgpu_device *adev); |
284 | int amdgpu_map_static_csa(struct amdgpu_device *adev, struct amdgpu_vm *vm, | 284 | int amdgpu_map_static_csa(struct amdgpu_device *adev, struct amdgpu_vm *vm, |
285 | struct amdgpu_bo_va **bo_va); | 285 | struct amdgpu_bo_va **bo_va); |
286 | void amdgpu_free_static_csa(struct amdgpu_device *adev); | ||
286 | void amdgpu_virt_init_setting(struct amdgpu_device *adev); | 287 | void amdgpu_virt_init_setting(struct amdgpu_device *adev); |
287 | uint32_t amdgpu_virt_kiq_rreg(struct amdgpu_device *adev, uint32_t reg); | 288 | uint32_t amdgpu_virt_kiq_rreg(struct amdgpu_device *adev, uint32_t reg); |
288 | void amdgpu_virt_kiq_wreg(struct amdgpu_device *adev, uint32_t reg, uint32_t v); | 289 | void amdgpu_virt_kiq_wreg(struct amdgpu_device *adev, uint32_t reg, uint32_t v); |
diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c index ee77c949bf87..d02493cf9175 100644 --- a/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c | |||
@@ -2114,7 +2114,6 @@ static int gfx_v8_0_sw_fini(void *handle) | |||
2114 | amdgpu_gfx_compute_mqd_sw_fini(adev); | 2114 | amdgpu_gfx_compute_mqd_sw_fini(adev); |
2115 | amdgpu_gfx_kiq_free_ring(&adev->gfx.kiq.ring, &adev->gfx.kiq.irq); | 2115 | amdgpu_gfx_kiq_free_ring(&adev->gfx.kiq.ring, &adev->gfx.kiq.irq); |
2116 | amdgpu_gfx_kiq_fini(adev); | 2116 | amdgpu_gfx_kiq_fini(adev); |
2117 | amdgpu_bo_free_kernel(&adev->virt.csa_obj, &adev->virt.csa_vmid0_addr, NULL); | ||
2118 | 2117 | ||
2119 | gfx_v8_0_mec_fini(adev); | 2118 | gfx_v8_0_mec_fini(adev); |
2120 | gfx_v8_0_rlc_fini(adev); | 2119 | gfx_v8_0_rlc_fini(adev); |
diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c index 5ba24792f801..560d8e76d14c 100644 --- a/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c | |||
@@ -1464,7 +1464,6 @@ static int gfx_v9_0_sw_fini(void *handle) | |||
1464 | amdgpu_gfx_compute_mqd_sw_fini(adev); | 1464 | amdgpu_gfx_compute_mqd_sw_fini(adev); |
1465 | amdgpu_gfx_kiq_free_ring(&adev->gfx.kiq.ring, &adev->gfx.kiq.irq); | 1465 | amdgpu_gfx_kiq_free_ring(&adev->gfx.kiq.ring, &adev->gfx.kiq.irq); |
1466 | amdgpu_gfx_kiq_fini(adev); | 1466 | amdgpu_gfx_kiq_fini(adev); |
1467 | amdgpu_bo_free_kernel(&adev->virt.csa_obj, &adev->virt.csa_vmid0_addr, NULL); | ||
1468 | 1467 | ||
1469 | gfx_v9_0_mec_fini(adev); | 1468 | gfx_v9_0_mec_fini(adev); |
1470 | gfx_v9_0_ngg_fini(adev); | 1469 | gfx_v9_0_ngg_fini(adev); |