Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

drm/amdgpu/gfx12: adjust KGQ reset sequence

Kernel gfx queues do not need to be reinitialized or
remapped after a reset. Align with gfx11.

v2: preserve init and remap for MMIO case.

Reviewed-by: Timur Kristóf <timur.kristof@gmail.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
(cherry picked from commit 0a6d6ed694d72b66b0ed7a483d5effa01acd3951)
Cc: stable@vger.kernel.org

+13 -10
+13 -10
drivers/gpu/drm/amd/amdgpu/gfx_v12_0.c
··· 5297 5297 struct amdgpu_fence *timedout_fence) 5298 5298 { 5299 5299 struct amdgpu_device *adev = ring->adev; 5300 + bool use_mmio = false; 5300 5301 int r; 5301 5302 5302 5303 amdgpu_ring_reset_helper_begin(ring, timedout_fence); 5303 5304 5304 - r = amdgpu_mes_reset_legacy_queue(ring->adev, ring, vmid, false); 5305 + r = amdgpu_mes_reset_legacy_queue(ring->adev, ring, vmid, use_mmio); 5305 5306 if (r) { 5306 5307 dev_warn(adev->dev, "reset via MES failed and try pipe reset %d\n", r); 5307 5308 r = gfx_v12_reset_gfx_pipe(ring); ··· 5310 5309 return r; 5311 5310 } 5312 5311 5313 - r = gfx_v12_0_kgq_init_queue(ring, true); 5314 - if (r) { 5315 - dev_err(adev->dev, "failed to init kgq\n"); 5316 - return r; 5317 - } 5312 + if (use_mmio) { 5313 + r = gfx_v12_0_kgq_init_queue(ring, true); 5314 + if (r) { 5315 + dev_err(adev->dev, "failed to init kgq\n"); 5316 + return r; 5317 + } 5318 5318 5319 - r = amdgpu_mes_map_legacy_queue(adev, ring); 5320 - if (r) { 5321 - dev_err(adev->dev, "failed to remap kgq\n"); 5322 - return r; 5319 + r = amdgpu_mes_map_legacy_queue(adev, ring); 5320 + if (r) { 5321 + dev_err(adev->dev, "failed to remap kgq\n"); 5322 + return r; 5323 + } 5323 5324 } 5324 5325 5325 5326 return amdgpu_ring_reset_helper_end(ring, timedout_fence);