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

Reply via email to