Skip to content

Commit 4867b51

Browse files
alexdeuchergregkh
authored andcommitted
drm/amdgpu/gfx11: adjust KGQ reset sequence
commit 3eb46fb upstream. Kernel gfx queues do not need to be reinitialized or remapped after a reset. This fixes queue reset failures on APUs. v2: preserve init and remap for MMIO case. Fixes: b3e9bfd ("drm/amdgpu/gfx11: add ring reset callbacks") Closes: https://gitlab.freedesktop.org/drm/amd/-/issues/4789 Reviewed-by: Timur Kristóf <timur.kristof@gmail.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com> (cherry picked from commit b340ff2) Cc: stable@vger.kernel.org Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
1 parent 018892b commit 4867b51

1 file changed

Lines changed: 13 additions & 10 deletions

File tree

drivers/gpu/drm/amd/amdgpu/gfx_v11_0.c

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6821,11 +6821,12 @@ static int gfx_v11_0_reset_kgq(struct amdgpu_ring *ring,
68216821
struct amdgpu_fence *timedout_fence)
68226822
{
68236823
struct amdgpu_device *adev = ring->adev;
6824+
bool use_mmio = false;
68246825
int r;
68256826

68266827
amdgpu_ring_reset_helper_begin(ring, timedout_fence);
68276828

6828-
r = amdgpu_mes_reset_legacy_queue(ring->adev, ring, vmid, false);
6829+
r = amdgpu_mes_reset_legacy_queue(ring->adev, ring, vmid, use_mmio);
68296830
if (r) {
68306831

68316832
dev_warn(adev->dev, "reset via MES failed and try pipe reset %d\n", r);
@@ -6834,16 +6835,18 @@ static int gfx_v11_0_reset_kgq(struct amdgpu_ring *ring,
68346835
return r;
68356836
}
68366837

6837-
r = gfx_v11_0_kgq_init_queue(ring, true);
6838-
if (r) {
6839-
dev_err(adev->dev, "failed to init kgq\n");
6840-
return r;
6841-
}
6838+
if (use_mmio) {
6839+
r = gfx_v11_0_kgq_init_queue(ring, true);
6840+
if (r) {
6841+
dev_err(adev->dev, "failed to init kgq\n");
6842+
return r;
6843+
}
68426844

6843-
r = amdgpu_mes_map_legacy_queue(adev, ring);
6844-
if (r) {
6845-
dev_err(adev->dev, "failed to remap kgq\n");
6846-
return r;
6845+
r = amdgpu_mes_map_legacy_queue(adev, ring);
6846+
if (r) {
6847+
dev_err(adev->dev, "failed to remap kgq\n");
6848+
return r;
6849+
}
68476850
}
68486851

68496852
return amdgpu_ring_reset_helper_end(ring, timedout_fence);

0 commit comments

Comments
 (0)