[Public] > -----Original Message----- > From: amd-gfx <amd-gfx-bounces@xxxxxxxxxxxxxxxxxxxxx> On Behalf Of Philip > Yang > Sent: Monday, June 27, 2022 1:32 PM > To: amd-gfx@xxxxxxxxxxxxxxxxxxxxx > Cc: Yang, Philip <Philip.Yang@xxxxxxx> > Subject: [PATCH 1/1] Revert "drm/amdkfd: Free queue after unmap queue > success" > > This reverts commit 150c1266d78fbaa0fc5f89461daafae416db1c3e. > > This causes KFDTest regression on gfx9, will submit new patch after fixing. Which test? Also, missing your s-o-b. With that fixed: Acked-by: Alex Deucher <alexander.deucher@xxxxxxx> > --- > .../drm/amd/amdkfd/kfd_device_queue_manager.c | 28 ++++++++----------- > .../amd/amdkfd/kfd_process_queue_manager.c | 2 +- > 2 files changed, 12 insertions(+), 18 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 21e451acfa59..93a0b6995430 100644 > --- a/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c > +++ b/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c > @@ -1881,22 +1881,6 @@ static int destroy_queue_cpsch(struct > device_queue_manager *dqm, > > } > > - if (q->properties.is_active) { > - if (!dqm->dev->shared_resources.enable_mes) { > - retval = execute_queues_cpsch(dqm, > - > KFD_UNMAP_QUEUES_FILTER_DYNAMIC_QUEUES, 0); > - if (retval == -ETIME) > - qpd->reset_wavefronts = true; > - } else { > - retval = remove_queue_mes(dqm, q, qpd); > - } > - > - if (retval) > - goto failed_unmap_queue; > - > - decrement_queue_count(dqm, qpd, q); > - } > - > mqd_mgr = dqm->mqd_mgrs[get_mqd_type_from_queue_type( > q->properties.type)]; > > @@ -1910,6 +1894,17 @@ static int destroy_queue_cpsch(struct > device_queue_manager *dqm, > > list_del(&q->list); > qpd->queue_count--; > + if (q->properties.is_active) { > + if (!dqm->dev->shared_resources.enable_mes) { > + decrement_queue_count(dqm, qpd, q); > + retval = execute_queues_cpsch(dqm, > + > KFD_UNMAP_QUEUES_FILTER_DYNAMIC_QUEUES, 0); > + if (retval == -ETIME) > + qpd->reset_wavefronts = true; > + } else { > + retval = remove_queue_mes(dqm, q, qpd); > + } > + } > > /* > * Unconditionally decrement this counter, regardless of the queue's > @@ -1926,7 +1921,6 @@ static int destroy_queue_cpsch(struct > device_queue_manager *dqm, > > return retval; > > -failed_unmap_queue: > failed_try_destroy_debugged_queue: > > dqm_unlock(dqm); > 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 a46e2a37b4a6..c9c205df4a14 100644 > --- a/drivers/gpu/drm/amd/amdkfd/kfd_process_queue_manager.c > +++ b/drivers/gpu/drm/amd/amdkfd/kfd_process_queue_manager.c > @@ -422,6 +422,7 @@ int pqm_destroy_queue(struct > process_queue_manager *pqm, unsigned int qid) > } > > if (pqn->q) { > + kfd_procfs_del_queue(pqn->q); > dqm = pqn->q->device->dqm; > retval = dqm->ops.destroy_queue(dqm, &pdd->qpd, pqn->q); > if (retval) { > @@ -445,7 +446,6 @@ int pqm_destroy_queue(struct > process_queue_manager *pqm, unsigned int qid) > amdgpu_amdkfd_free_gtt_mem(dev->adev, > pqn->q->wptr_bo); > > } > - kfd_procfs_del_queue(pqn->q); > uninit_queue(pqn->q); > } > > -- > 2.35.1