From: Felix Kuehling <[email protected]> Enable or disable NPA address translation using PSP during accelerator state transitions in and out of READY state.
Signed-off-by: Felix Kuehling <[email protected]> Reviewed-by: Mukul Joshi <[email protected]> Signed-off-by: Alex Deucher <[email protected]> --- drivers/gpu/drm/amd/amdgpu/amdgpu_ualink.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ualink.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ualink.c index ce73657a363f5..428296e5cec6a 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ualink.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ualink.c @@ -663,10 +663,16 @@ static bool check_local_vpod_integrity(struct amdgpu_device *adev) static void activate_accelerator(struct amdgpu_device *adev) { + int r; + if (adev->ualink.info->accel_state >= AMDGPU_UALINK_ACCEL_STATE_READY) return; - adev->ualink.info->accel_state = AMDGPU_UALINK_ACCEL_STATE_READY; + /* Enable incoming NPA address translation with VMID15 */ + r = psp_ual_set_npa_config(&adev->psp, adev->ualink.psp_if_ver, + 15, true); + if (!r) + adev->ualink.info->accel_state = AMDGPU_UALINK_ACCEL_STATE_READY; } static void deactivate_accelerator(struct amdgpu_device *adev) @@ -674,6 +680,10 @@ static void deactivate_accelerator(struct amdgpu_device *adev) if (adev->ualink.info->accel_state < AMDGPU_UALINK_ACCEL_STATE_READY) return; + /* Disable incoming NPA address translation with VMID15 */ + psp_ual_set_npa_config(&adev->psp, adev->ualink.psp_if_ver, + 15, false); + /* ignore return value */ adev->ualink.info->accel_state = AMDGPU_UALINK_ACCEL_STATE_CONFIGURED; } -- 2.55.0
