]> git.ipfire.org Git - thirdparty/kernel/stable.git/commit
drm/amdgpu: Fix map/unmap queue logic
authorLijo Lazar <lijo.lazar@amd.com>
Tue, 5 Nov 2024 05:00:20 +0000 (10:30 +0530)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 5 Dec 2024 12:53:24 +0000 (13:53 +0100)
commit5274cfe6c5999f89ba6e293c6fedb49f5f7eab42
treeade76f35f930e21cbe06dd7f50f1ead14c7b963c
parent1623d2ecb98dfd159616052f13622eaf2582b5c2
drm/amdgpu: Fix map/unmap queue logic

[ Upstream commit fa31798582882740f2b13d19e1bd43b4ef918e2f ]

In current logic, it calls ring_alloc followed by a ring_test. ring_test
in turn will call another ring_alloc. This is illegal usage as a
ring_alloc is expected to be closed properly with a ring_commit. Change
to commit the map/unmap queue packet first followed by a ring_test. Add a
comment about the usage of ring_test.

Also, reorder the current pre-condition checks of job hang or kiq ring
scheduler not ready. Without them being met, it is not useful to attempt
ring or memory allocations.

Fixes tag refers to the original patch which introduced this issue which
then got carried over into newer code.

Signed-off-by: Lijo Lazar <lijo.lazar@amd.com>
Reviewed-by: Le Ma <le.ma@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Fixes: 6c10b5cc4eaa ("drm/amdgpu: Remove duplicate code in gfx_v8_0.c")
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c
drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c
drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c