Message ID | 1420401181-9819-1-git-send-email-oded.gabbay@amd.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Sun, Jan 4, 2015 at 2:53 PM, Oded Gabbay <oded.gabbay@amd.com> wrote: > From: Ben Goz <ben.goz@amd.com> > > This patch fixes a bug in DQM, where the MQD of a newly created compute queue > is not loaded to an HQD slot. As a result, the CP never reads packets from this > queue. > > This bug happens only in non-HWS (hardware scheduling) mode. In HWS mode, the > CP is responsible of loading MQDs to HQDs slots. > > Signed-off-by: Ben Goz <ben.goz@amd.com> > Reviewed-by: Oded Gabbay <oded.gabbay@amd.com> Acked-by: Alex Deucher <alexander.deucher@amd.com> > --- > drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c | 12 ++++++++++++ > 1 file changed, 12 insertions(+) > > 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 f44d673..3b08ed6 100644 > --- a/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c > +++ b/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c > @@ -272,6 +272,18 @@ static int create_compute_queue_nocpsch(struct device_queue_manager *dqm, > return retval; > } > > + pr_debug("kfd: loading mqd to hqd on pipe (%d) queue (%d)\n", > + q->pipe, > + q->queue); > + > + retval = mqd->load_mqd(mqd, q->mqd, q->pipe, > + q->queue, q->properties.write_ptr); > + if (retval != 0) { > + deallocate_hqd(dqm, q); > + mqd->uninit_mqd(mqd, q->mqd, q->mqd_mem_obj); > + return retval; > + } > + > return 0; > } > > -- > 2.1.0 > > _______________________________________________ > dri-devel mailing list > dri-devel@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/dri-devel
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 f44d673..3b08ed6 100644 --- a/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c +++ b/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c @@ -272,6 +272,18 @@ static int create_compute_queue_nocpsch(struct device_queue_manager *dqm, return retval; } + pr_debug("kfd: loading mqd to hqd on pipe (%d) queue (%d)\n", + q->pipe, + q->queue); + + retval = mqd->load_mqd(mqd, q->mqd, q->pipe, + q->queue, q->properties.write_ptr); + if (retval != 0) { + deallocate_hqd(dqm, q); + mqd->uninit_mqd(mqd, q->mqd, q->mqd_mem_obj); + return retval; + } + return 0; }