Re: [PATCH] drm/amdkfd: fix add queue process context clear for hsa non-init cases

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 2023-09-12 20:53, Kim, Jonathan wrote:
[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.

OK, this can also happen when you run an older version of the HSA runtime that doesn't support the ROCm debugger yet. Please update the patch description accordingly.

Thanks,
  Felix



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) {



[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux