[PATCH v4 9/9] drm/amdgpu: add lock in kfd_process_dequeue_from_device
Felix Kuehling
felix.kuehling at amd.com
Thu Jun 6 19:01:47 UTC 2024
On 2024-06-04 21:33, Yunxiang Li wrote:
> We need to take the reset domain lock before talking to MES. While in
> this case we can take the lock inside the mes helper. We can't do so for
> most other mes helpers since they are used during reset. So for
> consistency sake we add the lock here.
>
> Signed-off-by: Yunxiang Li <Yunxiang.Li at amd.com>
Reviewed-by: Felix Kuehling <felix.kuehling at amd.com>
> ---
> drivers/gpu/drm/amd/amdkfd/kfd_process_queue_manager.c | 9 +++++++--
> 1 file changed, 7 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_process_queue_manager.c b/drivers/gpu/drm/amd/amdkfd/kfd_process_queue_manager.c
> index 86ea610b16f3..21f5a1fb3bf8 100644
> --- a/drivers/gpu/drm/amd/amdkfd/kfd_process_queue_manager.c
> +++ b/drivers/gpu/drm/amd/amdkfd/kfd_process_queue_manager.c
> @@ -28,6 +28,7 @@
> #include "kfd_priv.h"
> #include "kfd_kernel_queue.h"
> #include "amdgpu_amdkfd.h"
> +#include "amdgpu_reset.h"
>
> static inline struct process_queue_node *get_queue_by_qid(
> struct process_queue_manager *pqm, unsigned int qid)
> @@ -87,8 +88,12 @@ void kfd_process_dequeue_from_device(struct kfd_process_device *pdd)
> return;
>
> dev->dqm->ops.process_termination(dev->dqm, &pdd->qpd);
> - if (dev->kfd->shared_resources.enable_mes)
> - amdgpu_mes_flush_shader_debugger(dev->adev, pdd->proc_ctx_gpu_addr);
> + if (dev->kfd->shared_resources.enable_mes &&
> + down_read_trylock(&dev->adev->reset_domain->sem)) {
> + amdgpu_mes_flush_shader_debugger(dev->adev,
> + pdd->proc_ctx_gpu_addr);
> + up_read(&dev->adev->reset_domain->sem);
> + }
> pdd->already_dequeued = true;
> }
>
More information about the amd-gfx
mailing list