Thought so, in this case the patch is Reviewed-by: Christian König <christian.koenig at amd.com>. Regards, Christian. Am 14.11.2017 um 16:02 schrieb Liu, Monk: > Yeah CSA is allocated right after in GMC hw init (and after WB_INIT) > So we can put the free of it right before WB_INIT, thus avoiding doing it in each GFX IP's sw_init > > > > -----Original Message----- > From: Christian König [mailto:ckoenig.leichtzumerken at gmail.com] > Sent: 2017å¹´11æ??14æ?¥ 19:55 > To: Liu, Monk <Monk.Liu at amd.com>; amd-gfx at lists.freedesktop.org > Subject: Re: [PATCH 07/10] drm/amdgpu:free CSA in unified place > > 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); > > _______________________________________________ > amd-gfx mailing list > amd-gfx at lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/amd-gfx