From c337facc2041388230eec08590df8a8b4f9b7d8d Mon Sep 17 00:00:00 2001 From: Felix Kuehling Date: Tue, 7 Apr 2026 17:47:00 -0400 Subject: [PATCH] drm/amdgpu: Enable/disable NPA address translation using PSP Enable or disable NPA address translation using PSP during accelerator state transitions in and out of READY state. Signed-off-by: Felix Kuehling Reviewed-by: Mukul Joshi Signed-off-by: Alex Deucher --- 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 ce73657a363f..428296e5cec6 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; }