[Public] > -----Original Message----- > From: Kuehling, Felix <Felix.Kuehling@xxxxxxx> > Sent: Tuesday, September 12, 2023 8:36 PM > To: Kim, Jonathan <Jonathan.Kim@xxxxxxx>; amd-gfx@xxxxxxxxxxxxxxxxxxxxx > Cc: Ji, Ruili <Ruili.Ji@xxxxxxx>; Guo, Shikai <Shikai.Guo@xxxxxxx>; > JinHuiEricHuang@xxxxxxx > Subject: Re: [PATCH] drm/amdkfd: fix add queue process context clear for hsa > non-init cases > > On 2023-09-12 8:17, Jonathan Kim wrote: > > There are cases where HSA is not initialized when adding queues > > This statement doesn't make sense to me. If HSA is not initialized, it > means user mode hasn't opened the KFD device. So it can't create queues. > What do you really mean here? I meant the call to runtime enable e.g. KFD test can add a queue without runtime enable call. Thanks, Jon > > Regards, > Felix > > > > and > > the ADD_QUEUE API should clear the MES process context instead of > > SET_SHADER_DEBUGGER. > > > > The only time ADD_QUEUE.skip_process_ctx_clear is required is for > > debugger use cases and a debugged process is always runtime enabled > > when adding a queue. > > > > Tested-by: Shikai Guo <shikai.guo@xxxxxxx> > > Signed-off-by: Jonathan Kim <jonathan.kim@xxxxxxx> > > --- > > drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c | 6 ++++-- > > 1 file changed, 4 insertions(+), 2 deletions(-) > > > > diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c > b/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c > > index 6d07a5dd2648..77159b03a422 100644 > > --- a/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c > > +++ b/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c > > @@ -227,8 +227,10 @@ static int add_queue_mes(struct > device_queue_manager *dqm, struct queue *q, > > queue_input.tba_addr = qpd->tba_addr; > > queue_input.tma_addr = qpd->tma_addr; > > queue_input.trap_en = !kfd_dbg_has_cwsr_workaround(q->device); > > - queue_input.skip_process_ctx_clear = qpd->pqm->process- > >debug_trap_enabled || > > - > kfd_dbg_has_ttmps_always_setup(q->device); > > + queue_input.skip_process_ctx_clear = > > + qpd->pqm->process->runtime_info.runtime_state == > DEBUG_RUNTIME_STATE_ENABLED && > > + (qpd->pqm->process- > >debug_trap_enabled || > > + > kfd_dbg_has_ttmps_always_setup(q->device)); > > > > queue_type = convert_to_mes_queue_type(q->properties.type); > > if (queue_type < 0) {