On Thu, Nov 2, 2017 at 1:21 AM, Felix Kuehling <Felix.Kuehling at amd.com> wrote: > SDMA only supports a fixed number of queues. HWS cannot handle > oversubscription. > > Signed-off-by: shaoyun liu <shaoyun.liu at amd.com> > Signed-off-by: Felix Kuehling <Felix.Kuehling at amd.com> > --- > drivers/gpu/drm/amd/amdkfd/kfd_process_queue_manager.c | 18 ++++++++++++++++++ > 1 file changed, 18 insertions(+) > > 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 2bec902..a3f1e62 100644 > --- a/drivers/gpu/drm/amd/amdkfd/kfd_process_queue_manager.c > +++ b/drivers/gpu/drm/amd/amdkfd/kfd_process_queue_manager.c > @@ -191,6 +191,24 @@ int pqm_create_queue(struct process_queue_manager *pqm, > > switch (type) { > case KFD_QUEUE_TYPE_SDMA: > + if (dev->dqm->queue_count >= > + CIK_SDMA_QUEUES_PER_ENGINE * CIK_SDMA_ENGINE_NUM) { > + pr_err("Over-subscription is not allowed for SDMA.\n"); > + retval = -EPERM; > + goto err_create_queue; > + } > + > + retval = create_cp_queue(pqm, dev, &q, properties, f, *qid); > + if (retval != 0) > + goto err_create_queue; > + pqn->q = q; > + pqn->kq = NULL; > + retval = dev->dqm->ops.create_queue(dev->dqm, q, &pdd->qpd, > + &q->properties.vmid); > + pr_debug("DQM returned %d for create_queue\n", retval); > + print_queue(q); > + break; > + > case KFD_QUEUE_TYPE_COMPUTE: > /* check if there is over subscription */ > if ((sched_policy == KFD_SCHED_POLICY_HWS_NO_OVERSUBSCRIPTION) && > -- > 2.7.4 > This patch is: Reviewed-by: Oded Gabbay <oded.gabbay at gmail.com>