From: Lijo Lazar <[email protected]> Deactivate accelerator from vpod during hw_fini sequence.
Signed-off-by: Lijo Lazar <[email protected]> Reviewed-by: Hawking Zhang <[email protected]> Signed-off-by: Alex Deucher <[email protected]> --- drivers/gpu/drm/amd/amdgpu/amdgpu_ualink.c | 13 +++++++++++++ drivers/gpu/drm/amd/amdgpu/amdgpu_ualink.h | 1 + drivers/gpu/drm/amd/amdgpu/ualink_v1_0.c | 1 + 3 files changed, 15 insertions(+) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ualink.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ualink.c index 5957a3a2c85b1..19c2df55581b3 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ualink.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ualink.c @@ -425,6 +425,19 @@ int ualink_ip_hw_init(struct amdgpu_ip_block *ip_block) return 0; } +int ualink_ip_hw_fini(struct amdgpu_ip_block *ip_block) +{ + struct amdgpu_device *adev = ip_block->adev; + + if (adev->ualink.mgr_state != AMDGPU_UALINK_INIT_COMPLETE) + return 0; + + scoped_guard(mutex, &mgpu_info.mutex) + deactivate_accelerator(adev); + + return 0; +} + int ualink_ip_late_init(struct amdgpu_ip_block *ip_block) { struct amdgpu_device *adev = ip_block->adev; diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ualink.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_ualink.h index 792b0fc9fed97..8ec0bc80a0f7d 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ualink.h +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ualink.h @@ -413,6 +413,7 @@ int amdgpu_ualink_import_handle(struct drm_device *dev, void amdgpu_ualink_revoke_exported_memory(struct amdgpu_bo *bo); int ualink_ip_hw_init(struct amdgpu_ip_block *ip_block); +int ualink_ip_hw_fini(struct amdgpu_ip_block *ip_block); int ualink_ip_late_init(struct amdgpu_ip_block *ip_block); int ualink_ip_sw_init(struct amdgpu_ip_block *ip_block); int ualink_ip_sw_fini(struct amdgpu_ip_block *ip_block); diff --git a/drivers/gpu/drm/amd/amdgpu/ualink_v1_0.c b/drivers/gpu/drm/amd/amdgpu/ualink_v1_0.c index 58cf98ac94add..d440ed6b57336 100644 --- a/drivers/gpu/drm/amd/amdgpu/ualink_v1_0.c +++ b/drivers/gpu/drm/amd/amdgpu/ualink_v1_0.c @@ -131,6 +131,7 @@ static const struct amd_ip_funcs ualink_v1_0_ip_funcs = { .sw_init = ualink_v1_0_sw_init, .sw_fini = ualink_ip_sw_fini, .hw_init = ualink_ip_hw_init, + .hw_fini = ualink_ip_hw_fini, }; const struct amdgpu_ip_block_version ualink_v1_0_ip_block = { -- 2.55.0
