In mes_v11_0_unmap_legacy_queue(), set
remove_queue_after_reset=1 for RESET_QUEUES.
The queue may already be MMIO-reset. This
flag tells MES to drop internal queue state directly instead of issuing
another CP unmap flow, reducing timeout risk during recovery.

Suggested-by: Shaoyun Liu <[email protected]>
Signed-off-by: Jesse Zhang <[email protected]>
---
 drivers/gpu/drm/amd/amdgpu/mes_v11_0.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/drivers/gpu/drm/amd/amdgpu/mes_v11_0.c 
b/drivers/gpu/drm/amd/amdgpu/mes_v11_0.c
index 9e27d01cbfa3..7bc756ce7aba 100644
--- a/drivers/gpu/drm/amd/amdgpu/mes_v11_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/mes_v11_0.c
@@ -761,6 +761,11 @@ static int mes_v11_0_unmap_legacy_queue(struct amdgpu_mes 
*mes,
                mes_remove_queue_pkt.unmap_legacy_queue = 1;
                mes_remove_queue_pkt.queue_type =
                        convert_to_mes_queue_type(input->queue_type);
+
+               if (input->action == RESET_QUEUES &&
+                   (mes->sched_version & AMDGPU_MES_VERSION_MASK) >= 0x60)
+                       mes_remove_queue_pkt.remove_queue_after_reset = 1;
+
        }
 
        return mes_v11_0_submit_pkt_and_poll_completion(mes,
-- 
2.49.0

Reply via email to