From: Mukul Joshi <[email protected]>

Enable the UALink manager when the pod state transitions to active.
This would enable exchanging of memory across GPUs in a rack-scale
setup.

Signed-off-by: Mukul Joshi <[email protected]>
Reviewed-by: Felix Kuehling <[email protected]>
Signed-off-by: Alex Deucher <[email protected]>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_ualink.c | 16 ++++++++++++++--
 1 file changed, 14 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ualink.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_ualink.c
index 89ba7cef02e81..6329fc8e217e7 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ualink.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ualink.c
@@ -680,8 +680,18 @@ static void activate_accelerator(struct amdgpu_device 
*adev)
        /* Enable incoming NPA address translation with NPA VMID */
        r = psp_ual_set_npa_config(&adev->psp, adev->ualink.psp_if_ver,
                                   adev->vm_manager.npa_vmid, true);
-       if (!r)
-               adev->ualink.info->accel_state = 
AMDGPU_UALINK_ACCEL_STATE_READY;
+       if (r) {
+               dev_err(adev->dev, "Failed to set NPA config\n");
+               return;
+       }
+
+       r = amdgpu_ualink_manager_start(adev);
+       if (r) {
+               dev_err(adev->dev, "Failed to start UALink manager\n");
+               return;
+       }
+
+       adev->ualink.info->accel_state = AMDGPU_UALINK_ACCEL_STATE_READY;
 }
 
 static void deactivate_accelerator(struct amdgpu_device *adev)
@@ -694,6 +704,8 @@ static void deactivate_accelerator(struct amdgpu_device 
*adev)
                               adev->vm_manager.npa_vmid, false);
        /* ignore return value */
        adev->ualink.info->accel_state = AMDGPU_UALINK_ACCEL_STATE_CONFIGURED;
+
+       amdgpu_ualink_manager_stop(adev);
 }
 
 static void activate_local_vpod(struct amdgpu_device *adev)
-- 
2.55.0

Reply via email to