From 3cdf8fa01d81af24cf018130540a8749d732c98d Mon Sep 17 00:00:00 2001 From: Jesse Zhang Date: Thu, 17 Sep 2026 14:16:46 +0800 Subject: [PATCH] drm/amdgpu/gfx: preserve collateral rings during gfx pipe reset Route kernel GFX resets through amdgpu_gfx_reset_mes_gfx() when PER_PIPE is supported, so collateral kernel rings are preserved across a pipe reset. Keep the existing queue reset path otherwise. Signed-off-by: Jesse Zhang Reviewed-by: Alex Deucher Signed-off-by: Alex Deucher --- drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c index 1cd6eb4f4750..0ae6e990c310 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c @@ -2186,13 +2186,19 @@ int amdgpu_gfx_mes_reset_queue(struct amdgpu_ring *ring, struct amdgpu_fence *timedout_fence, bool use_mmio) { + struct amdgpu_device *adev = ring->adev; int r; - r = amdgpu_gfx_mes_reset_queue_start(ring, vmid, timedout_fence, - use_mmio); - if (r) - return r; - return amdgpu_ring_reset_helper_end(ring, timedout_fence); + if (!amdgpu_gfx_me_pipe_reset_supported(adev)) { + r = amdgpu_gfx_mes_reset_queue_start(ring, vmid, timedout_fence, + use_mmio); + if (r) + return r; + return amdgpu_ring_reset_helper_end(ring, timedout_fence); + } + + return amdgpu_gfx_reset_mes_gfx(adev, ring, timedout_fence, NULL, vmid, + use_mmio); } static DEVICE_ATTR(run_cleaner_shader, 0200,