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 >