Commit b340ff21 authored by Alex Deucher's avatar Alex Deucher
Browse files

drm/amdgpu/gfx11: adjust KGQ reset sequence

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: b3e9bfd8 ("drm/amdgpu/gfx11: add ring reset callbacks")
Closes: https://gitlab.freedesktop.org/drm/amd/-/issues/4789


Reviewed-by: default avatarTimur Kristóf <timur.kristof@gmail.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent a2918f95
Loading
Loading
Loading
Loading
+13 −10
Original line number Diff line number Diff line
@@ -6828,11 +6828,12 @@ static int gfx_v11_0_reset_kgq(struct amdgpu_ring *ring,
			       struct amdgpu_fence *timedout_fence)
{
	struct amdgpu_device *adev = ring->adev;
	bool use_mmio = false;
	int r;

	amdgpu_ring_reset_helper_begin(ring, timedout_fence);

	r = amdgpu_mes_reset_legacy_queue(ring->adev, ring, vmid, false, 0);
	r = amdgpu_mes_reset_legacy_queue(ring->adev, ring, vmid, use_mmio, 0);
	if (r) {

		dev_warn(adev->dev, "reset via MES failed and try pipe reset %d\n", r);
@@ -6841,6 +6842,7 @@ static int gfx_v11_0_reset_kgq(struct amdgpu_ring *ring,
			return r;
	}

	if (use_mmio) {
		r = gfx_v11_0_kgq_init_queue(ring, true);
		if (r) {
			dev_err(adev->dev, "failed to init kgq\n");
@@ -6852,6 +6854,7 @@ static int gfx_v11_0_reset_kgq(struct amdgpu_ring *ring,
			dev_err(adev->dev, "failed to remap kgq\n");
			return r;
		}
	}

	return amdgpu_ring_reset_helper_end(ring, timedout_fence);
}