Re: [PATCH 1/2] drm/amdgpu: add new mes misc api for gfx11

Alex Deucher <[email protected]>
Newsgroups org.freedesktop.lists.amd-gfx
Message-ID <CADnq5_M4SvP3T8bLwyQZbFVK6XZnOetEkS6_LdOpqKYeL_R=pA@mail.gmail.com>
On Wed, Aug 5, 2026 at 6:23 PM Eric Huang <[email protected]> wrote:
>
> new api will be used to workaround a HW scheduler issue
> for 100% usage when gpu has no workload.
>
> Signed-off-by: Eric Huang <[email protected]>
> ---
>  drivers/gpu/drm/amd/amdgpu/amdgpu_mes.c | 23 +++++++++++++++++++++++
>  drivers/gpu/drm/amd/amdgpu/amdgpu_mes.h |  4 ++++
>  drivers/gpu/drm/amd/amdgpu/mes_v11_0.c  |  5 ++++-
>  3 files changed, 31 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_mes.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_mes.c
> index b96f94e5169f..421d937c1188 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_mes.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_mes.c
> @@ -1140,6 +1140,29 @@ void amdgpu_mes_free_gang_ctx_index(struct amdgpu_mes *mes,
>         amdgpu_mes_unlock(mes);
>  }
>
> +int amdgpu_mes_notify_unmap_queue(struct amdgpu_device *adev)
> +{
> +       struct mes_misc_op_input op_input = {0};
> +       int r;
> +
> +       op_input.op = MES_MISC_NOTIFY_WORK_ON_UNMAPPED_QUEUE;
> +
> +       if (!adev->mes.funcs->misc_op) {
> +               dev_err(adev->dev, "mes notify unmap queue is not supported!\n");
> +               r = -EINVAL;
> +               goto error;
> +       }
> +
> +       amdgpu_mes_lock(&adev->mes);
> +       r = adev->mes.funcs->misc_op(&adev->mes, &op_input);
> +       amdgpu_mes_unlock(&adev->mes);
> +       if (r)
> +               dev_err(adev->dev, "failed to notify unmap queue.\n");
> +
> +error:
> +       return r;
> +}
> +
>  #if defined(CONFIG_DEBUG_FS)
>
>  static int amdgpu_debugfs_mes_event_log_show(struct seq_file *m, void *unused)
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_mes.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_mes.h
> index 977c057dcce8..5230b1ba1a46 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_mes.h
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_mes.h
> @@ -366,6 +366,7 @@ enum mes_misc_opcode {
>         MES_MISC_OP_WRM_REG_WR_WAIT,
>         MES_MISC_OP_SET_SHADER_DEBUGGER,
>         MES_MISC_OP_CHANGE_CONFIG,
> +       MES_MISC_NOTIFY_WORK_ON_UNMAPPED_QUEUE

What's the minimum fw version which supports this?  We need to check
so we only use it when supported.

Alex

>  };
>
>  struct mes_misc_op_input {
> @@ -643,4 +644,7 @@ int amdgpu_mes_alloc_gang_ctx_index(struct amdgpu_mes *mes,
>                                     uint32_t *index);
>  void amdgpu_mes_free_gang_ctx_index(struct amdgpu_mes *mes,
>                                     uint32_t index);
> +
> +int amdgpu_mes_notify_unmap_queue(struct amdgpu_device *adev);
> +
>  #endif /* __AMDGPU_MES_H__ */
> diff --git a/drivers/gpu/drm/amd/amdgpu/mes_v11_0.c b/drivers/gpu/drm/amd/amdgpu/mes_v11_0.c
> index a0b874c9ee7b..bc0ee6ccfca7 100644
> --- a/drivers/gpu/drm/amd/amdgpu/mes_v11_0.c
> +++ b/drivers/gpu/drm/amd/amdgpu/mes_v11_0.c
> @@ -957,7 +957,10 @@ static int mes_v11_0_misc_op(struct amdgpu_mes *mes,
>                 misc_pkt.change_config.option.bits.limit_single_process =
>                                 input->change_config.option.limit_single_process;
>                 break;
> -
> +       case MES_MISC_NOTIFY_WORK_ON_UNMAPPED_QUEUE:
> +               misc_pkt.opcode = MESAPI_MISC__NOTIFY_WORK_ON_UNMAPPED_QUEUE;
> +               misc_pkt.queue_sch_level = AMD_PRIORITY_LEVEL_NORMAL;
> +               break;
>         default:
>                 drm_err(adev_to_drm(mes->adev), "unsupported misc op (%d)\n", input->op);
>                 return -EINVAL;
> --
> 2.34.1
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.