Skip to content

Commit 672f50b

Browse files
committed
drm/amdgpu/mes: add missing locking in helper functions
JIRA: https://issues.redhat.com/browse/RHEL-75958 commit a5b91370f1f7bcdf46c5f224f1ac24494fbfebbc Author: Alex Deucher <alexander.deucher@amd.com> Date: Mon May 19 15:46:25 2025 -0400 drm/amdgpu/mes: add missing locking in helper functions [ Upstream commit 40f970b ] We need to take the MES lock. Reviewed-by: Michael Chen <michael.chen@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com> Cc: stable@vger.kernel.org Signed-off-by: Sasha Levin <sashal@kernel.org> Signed-off-by: José Expósito <jexposit@redhat.com>
1 parent ecd5b6a commit 672f50b

File tree

1 file changed

+16
-0
lines changed

1 file changed

+16
-0
lines changed

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

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -836,7 +836,9 @@ int amdgpu_mes_map_legacy_queue(struct amdgpu_device *adev,
836836
queue_input.mqd_addr = amdgpu_bo_gpu_offset(ring->mqd_obj);
837837
queue_input.wptr_addr = ring->wptr_gpu_addr;
838838

839+
amdgpu_mes_lock(&adev->mes);
839840
r = adev->mes.funcs->map_legacy_queue(&adev->mes, &queue_input);
841+
amdgpu_mes_unlock(&adev->mes);
840842
if (r)
841843
DRM_ERROR("failed to map legacy queue\n");
842844

@@ -859,7 +861,9 @@ int amdgpu_mes_unmap_legacy_queue(struct amdgpu_device *adev,
859861
queue_input.trail_fence_addr = gpu_addr;
860862
queue_input.trail_fence_data = seq;
861863

864+
amdgpu_mes_lock(&adev->mes);
862865
r = adev->mes.funcs->unmap_legacy_queue(&adev->mes, &queue_input);
866+
amdgpu_mes_unlock(&adev->mes);
863867
if (r)
864868
DRM_ERROR("failed to unmap legacy queue\n");
865869

@@ -886,7 +890,9 @@ int amdgpu_mes_reset_legacy_queue(struct amdgpu_device *adev,
886890
queue_input.vmid = vmid;
887891
queue_input.use_mmio = use_mmio;
888892

893+
amdgpu_mes_lock(&adev->mes);
889894
r = adev->mes.funcs->reset_legacy_queue(&adev->mes, &queue_input);
895+
amdgpu_mes_unlock(&adev->mes);
890896
if (r)
891897
DRM_ERROR("failed to reset legacy queue\n");
892898

@@ -916,7 +922,9 @@ uint32_t amdgpu_mes_rreg(struct amdgpu_device *adev, uint32_t reg)
916922
goto error;
917923
}
918924

925+
amdgpu_mes_lock(&adev->mes);
919926
r = adev->mes.funcs->misc_op(&adev->mes, &op_input);
927+
amdgpu_mes_unlock(&adev->mes);
920928
if (r)
921929
DRM_ERROR("failed to read reg (0x%x)\n", reg);
922930
else
@@ -944,7 +952,9 @@ int amdgpu_mes_wreg(struct amdgpu_device *adev,
944952
goto error;
945953
}
946954

955+
amdgpu_mes_lock(&adev->mes);
947956
r = adev->mes.funcs->misc_op(&adev->mes, &op_input);
957+
amdgpu_mes_unlock(&adev->mes);
948958
if (r)
949959
DRM_ERROR("failed to write reg (0x%x)\n", reg);
950960

@@ -971,7 +981,9 @@ int amdgpu_mes_reg_write_reg_wait(struct amdgpu_device *adev,
971981
goto error;
972982
}
973983

984+
amdgpu_mes_lock(&adev->mes);
974985
r = adev->mes.funcs->misc_op(&adev->mes, &op_input);
986+
amdgpu_mes_unlock(&adev->mes);
975987
if (r)
976988
DRM_ERROR("failed to reg_write_reg_wait\n");
977989

@@ -996,7 +1008,9 @@ int amdgpu_mes_reg_wait(struct amdgpu_device *adev, uint32_t reg,
9961008
goto error;
9971009
}
9981010

1011+
amdgpu_mes_lock(&adev->mes);
9991012
r = adev->mes.funcs->misc_op(&adev->mes, &op_input);
1013+
amdgpu_mes_unlock(&adev->mes);
10001014
if (r)
10011015
DRM_ERROR("failed to reg_write_reg_wait\n");
10021016

@@ -1687,7 +1701,9 @@ static int amdgpu_mes_set_enforce_isolation(struct amdgpu_device *adev,
16871701
goto error;
16881702
}
16891703

1704+
amdgpu_mes_lock(&adev->mes);
16901705
r = adev->mes.funcs->misc_op(&adev->mes, &op_input);
1706+
amdgpu_mes_unlock(&adev->mes);
16911707
if (r)
16921708
dev_err(adev->dev, "failed to change_config.\n");
16931709

0 commit comments

Comments
 (0)