<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<style type="text/css" style="display:none;"> P {margin-top:0;margin-bottom:0;} </style>
</head>
<body dir="ltr">
<p style="font-family:Calibri;font-size:10pt;color:#008000;margin:5pt;font-style:normal;font-weight:normal;text-decoration:none;" align="Left">
[Public]<br>
</p>
<br>
<div>
<div class="elementToProof" style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
This series is</div>
<div class="elementToProof" style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 12pt; color: black;">
Reviewed-by: Michael Chen <michael.chen@amd.com></div>
<div id="appendonsend"></div>
<hr style="display:inline-block;width:98%" tabindex="-1">
<div id="divRplyFwdMsg" dir="ltr"><font face="Calibri, sans-serif" style="font-size:11pt" color="#000000"><b>From:</b> amd-gfx <amd-gfx-bounces@lists.freedesktop.org> on behalf of Alex Deucher <alexdeucher@gmail.com><br>
<b>Sent:</b> Tuesday, May 27, 2025 10:46 AM<br>
<b>To:</b> Deucher, Alexander <Alexander.Deucher@amd.com><br>
<b>Cc:</b> amd-gfx@lists.freedesktop.org <amd-gfx@lists.freedesktop.org><br>
<b>Subject:</b> Re: [PATCH 1/2] drm/amdgpu/mes: add missing locking in helper functions</font>
<div> </div>
</div>
<div class="BodyFragment"><font size="2"><span style="font-size:11pt;">
<div class="PlainText">Ping on this series?<br>
<br>
Alex<br>
<br>
On Mon, May 19, 2025 at 4:04 PM Alex Deucher <alexander.deucher@amd.com> wrote:<br>
><br>
> We need to take the MES lock.<br>
><br>
> Signed-off-by: Alex Deucher <alexander.deucher@amd.com><br>
> ---<br>
>  drivers/gpu/drm/amd/amdgpu/amdgpu_mes.c | 16 ++++++++++++++++<br>
>  1 file changed, 16 insertions(+)<br>
><br>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_mes.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_mes.c<br>
> index a4f2be39c237f..bf375687613a8 100644<br>
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_mes.c<br>
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_mes.c<br>
> @@ -303,7 +303,9 @@ int amdgpu_mes_map_legacy_queue(struct amdgpu_device *adev,<br>
>         if (ring == &adev->mes.ring[AMDGPU_MES_SCHED_PIPE])<br>
>                 queue_input.use_kiq = true;<br>
><br>
> +       amdgpu_mes_lock(&adev->mes);<br>
>         r = adev->mes.funcs->map_legacy_queue(&adev->mes, &queue_input);<br>
> +       amdgpu_mes_unlock(&adev->mes);<br>
>         if (r)<br>
>                 DRM_ERROR("failed to map legacy queue\n");<br>
><br>
> @@ -330,7 +332,9 @@ int amdgpu_mes_unmap_legacy_queue(struct amdgpu_device *adev,<br>
>         if (ring == &adev->mes.ring[AMDGPU_MES_SCHED_PIPE])<br>
>                 queue_input.use_kiq = true;<br>
><br>
> +       amdgpu_mes_lock(&adev->mes);<br>
>         r = adev->mes.funcs->unmap_legacy_queue(&adev->mes, &queue_input);<br>
> +       amdgpu_mes_unlock(&adev->mes);<br>
>         if (r)<br>
>                 DRM_ERROR("failed to unmap legacy queue\n");<br>
><br>
> @@ -359,7 +363,9 @@ int amdgpu_mes_reset_legacy_queue(struct amdgpu_device *adev,<br>
>         if (ring->funcs->type == AMDGPU_RING_TYPE_GFX)<br>
>                 queue_input.legacy_gfx = true;<br>
><br>
> +       amdgpu_mes_lock(&adev->mes);<br>
>         r = adev->mes.funcs->reset_hw_queue(&adev->mes, &queue_input);<br>
> +       amdgpu_mes_unlock(&adev->mes);<br>
>         if (r)<br>
>                 DRM_ERROR("failed to reset legacy queue\n");<br>
><br>
> @@ -389,7 +395,9 @@ uint32_t amdgpu_mes_rreg(struct amdgpu_device *adev, uint32_t reg)<br>
>                 goto error;<br>
>         }<br>
><br>
> +       amdgpu_mes_lock(&adev->mes);<br>
>         r = adev->mes.funcs->misc_op(&adev->mes, &op_input);<br>
> +       amdgpu_mes_unlock(&adev->mes);<br>
>         if (r)<br>
>                 dev_err(adev->dev, "failed to read reg (0x%x)\n", reg);<br>
>         else<br>
> @@ -417,7 +425,9 @@ int amdgpu_mes_wreg(struct amdgpu_device *adev,<br>
>                 goto error;<br>
>         }<br>
><br>
> +       amdgpu_mes_lock(&adev->mes);<br>
>         r = adev->mes.funcs->misc_op(&adev->mes, &op_input);<br>
> +       amdgpu_mes_unlock(&adev->mes);<br>
>         if (r)<br>
>                 dev_err(adev->dev, "failed to write reg (0x%x)\n", reg);<br>
><br>
> @@ -444,7 +454,9 @@ int amdgpu_mes_reg_write_reg_wait(struct amdgpu_device *adev,<br>
>                 goto error;<br>
>         }<br>
><br>
> +       amdgpu_mes_lock(&adev->mes);<br>
>         r = adev->mes.funcs->misc_op(&adev->mes, &op_input);<br>
> +       amdgpu_mes_unlock(&adev->mes);<br>
>         if (r)<br>
>                 dev_err(adev->dev, "failed to reg_write_reg_wait\n");<br>
><br>
> @@ -469,7 +481,9 @@ int amdgpu_mes_reg_wait(struct amdgpu_device *adev, uint32_t reg,<br>
>                 goto error;<br>
>         }<br>
><br>
> +       amdgpu_mes_lock(&adev->mes);<br>
>         r = adev->mes.funcs->misc_op(&adev->mes, &op_input);<br>
> +       amdgpu_mes_unlock(&adev->mes);<br>
>         if (r)<br>
>                 dev_err(adev->dev, "failed to reg_write_reg_wait\n");<br>
><br>
> @@ -700,7 +714,9 @@ static int amdgpu_mes_set_enforce_isolation(struct amdgpu_device *adev,<br>
>                 goto error;<br>
>         }<br>
><br>
> +       amdgpu_mes_lock(&adev->mes);<br>
>         r = adev->mes.funcs->misc_op(&adev->mes, &op_input);<br>
> +       amdgpu_mes_unlock(&adev->mes);<br>
>         if (r)<br>
>                 dev_err(adev->dev, "failed to change_config.\n");<br>
><br>
> --<br>
> 2.49.0<br>
><br>
</div>
</span></font></div>
</div>
</body>
</html>