On 2025-08-04 7:05, Zhu Lingshan wrote: > In kq_initialize, queue->process of a HIQ should > be set to NULL because it does not belong to any kfd_process. > > This commit decommisions the function kfd_get_process() because > it can not locate a specific kfd_process among multiple > contexts and not any code path calls it after this commit. > > Signed-off-by: Zhu Lingshan <lingshan....@amd.com> > --- > drivers/gpu/drm/amd/amdkfd/kfd_kernel_queue.c | 3 ++- > drivers/gpu/drm/amd/amdkfd/kfd_priv.h | 1 - > drivers/gpu/drm/amd/amdkfd/kfd_process.c | 18 ------------------ > 3 files changed, 2 insertions(+), 20 deletions(-) > > diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_kernel_queue.c > b/drivers/gpu/drm/amd/amdkfd/kfd_kernel_queue.c > index 2b0a830f5b29..ebee37937783 100644 > --- a/drivers/gpu/drm/amd/amdkfd/kfd_kernel_queue.c > +++ b/drivers/gpu/drm/amd/amdkfd/kfd_kernel_queue.c > @@ -144,7 +144,8 @@ static bool kq_initialize(struct kernel_queue *kq, struct > kfd_node *dev, > goto err_init_queue; > > kq->queue->device = dev; > - kq->queue->process = kfd_get_process(current); > + if (type == KFD_QUEUE_TYPE_HIQ) > + kq->queue->process = NULL;
I think this should either unconditionally set the process to NULL for kernel queues, or not touch it at all, because it's probably 0-initialized at allocation time. Either way, this commit should come after the one that removes the DIQ type, because DIQ did belong to a process. Regards, Felix > > kq->queue->mqd_mem_obj = kq->mqd_mgr->allocate_mqd(kq->mqd_mgr->dev, > &kq->queue->properties); > diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_priv.h > b/drivers/gpu/drm/amd/amdkfd/kfd_priv.h > index d140463e221b..25534473c28f 100644 > --- a/drivers/gpu/drm/amd/amdkfd/kfd_priv.h > +++ b/drivers/gpu/drm/amd/amdkfd/kfd_priv.h > @@ -1050,7 +1050,6 @@ void kfd_process_destroy_wq(void); > void kfd_cleanup_processes(void); > struct kfd_process *kfd_create_process(struct task_struct *thread); > int kfd_create_process_sysfs(struct kfd_process *process); > -struct kfd_process *kfd_get_process(const struct task_struct *task); > struct kfd_process *kfd_lookup_process_by_pasid(u32 pasid, > struct kfd_process_device > **pdd); > struct kfd_process *kfd_lookup_process_by_mm(const struct mm_struct *mm); > diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_process.c > b/drivers/gpu/drm/amd/amdkfd/kfd_process.c > index 8e498fd35b8c..0c3f0cc16bf4 100644 > --- a/drivers/gpu/drm/amd/amdkfd/kfd_process.c > +++ b/drivers/gpu/drm/amd/amdkfd/kfd_process.c > @@ -989,24 +989,6 @@ struct kfd_process *kfd_create_process(struct > task_struct *thread) > return process; > } > > -struct kfd_process *kfd_get_process(const struct task_struct *thread) > -{ > - struct kfd_process *process; > - > - if (!thread->mm) > - return ERR_PTR(-EINVAL); > - > - /* Only the pthreads threading model is supported. */ > - if (thread->group_leader->mm != thread->mm) > - return ERR_PTR(-EINVAL); > - > - process = find_process(thread, false); > - if (!process) > - return ERR_PTR(-EINVAL); > - > - return process; > -} > - > static struct kfd_process *find_process_by_mm(const struct mm_struct *mm) > { > struct kfd_process *process;