[PATCH 07/10] drm/amdgpu:free CSA in unified place
Christian König
ckoenig.leichtzumerken at gmail.com
Tue Nov 14 11:55:29 UTC 2017
Am 14.11.2017 um 10:07 schrieb Monk Liu:
> instead of doing it in each GFX ip's sw_fini
Mhm, is that allocated in the same way as well?
>
> Change-Id: Idf0fd500d4fc385cf7a930cc56305070c937bf20
> Signed-off-by: Monk Liu <Monk.Liu at amd.com>
> ---
> drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 1 +
> drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c | 6 ++++++
> drivers/gpu/drm/amd/amdgpu/amdgpu_virt.h | 1 +
> drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c | 1 -
> 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 c13b493..ccb33ef 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
> @@ -1865,6 +1865,7 @@ static int amdgpu_fini(struct amdgpu_device *adev)
> if (!adev->ip_blocks[i].status.hw)
> continue;
> if (adev->ip_blocks[i].version->type == AMD_IP_BLOCK_TYPE_GMC) {
> + amdgpu_free_static_csa(adev);
> amdgpu_wb_fini(adev);
> amdgpu_vram_scratch_fini(adev);
> }
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c
> index 67fd110..118c84c 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)
> return 0;
> }
>
> +void amdgpu_free_static_csa(struct amdgpu_device *adev) {
> + amdgpu_bo_free_kernel(&adev->virt.csa_obj,
> + &adev->virt.csa_vmid0_addr,
> + NULL);
The coding style here looks odd.
Christian.
> +}
> +
> /*
> * amdgpu_map_static_csa should be called during amdgpu_vm_init
> * 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 f77d116..6a83425 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);
> int amdgpu_allocate_static_csa(struct amdgpu_device *adev);
> int amdgpu_map_static_csa(struct amdgpu_device *adev, struct amdgpu_vm *vm,
> struct amdgpu_bo_va **bo_va);
> +void amdgpu_free_static_csa(struct amdgpu_device *adev);
> void amdgpu_virt_init_setting(struct amdgpu_device *adev);
> uint32_t amdgpu_virt_kiq_rreg(struct amdgpu_device *adev, uint32_t reg);
> 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 9f5d123..82d157e 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)
> amdgpu_gfx_compute_mqd_sw_fini(adev);
> amdgpu_gfx_kiq_free_ring(&adev->gfx.kiq.ring, &adev->gfx.kiq.irq);
> amdgpu_gfx_kiq_fini(adev);
> - amdgpu_bo_free_kernel(&adev->virt.csa_obj, &adev->virt.csa_vmid0_addr, NULL);
>
> gfx_v8_0_mec_fini(adev);
> 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 5a4c074..034bcbe 100644
> --- a/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c
> +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c
> @@ -1455,7 +1455,6 @@ static int gfx_v9_0_sw_fini(void *handle)
> amdgpu_gfx_compute_mqd_sw_fini(adev);
> amdgpu_gfx_kiq_free_ring(&adev->gfx.kiq.ring, &adev->gfx.kiq.irq);
> amdgpu_gfx_kiq_fini(adev);
> - amdgpu_bo_free_kernel(&adev->virt.csa_obj, &adev->virt.csa_vmid0_addr, NULL);
>
> gfx_v9_0_mec_fini(adev);
> gfx_v9_0_ngg_fini(adev);
More information about the amd-gfx
mailing list