From: Ben Goz ben.goz@amd.com
This commit adding fault handling for process queue manager update queue
Signed-off-by: Ben Goz ben.goz@amd.com Signed-off-by: Oded Gabbay oded.gabbay@amd.com --- drivers/gpu/hsa/radeon/kfd_process_queue_manager.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-)
diff --git a/drivers/gpu/hsa/radeon/kfd_process_queue_manager.c b/drivers/gpu/hsa/radeon/kfd_process_queue_manager.c index fe74dd7..2034d2b 100644 --- a/drivers/gpu/hsa/radeon/kfd_process_queue_manager.c +++ b/drivers/gpu/hsa/radeon/kfd_process_queue_manager.c @@ -334,6 +334,7 @@ int pqm_destroy_queue(struct process_queue_manager *pqm, unsigned int qid)
int pqm_update_queue(struct process_queue_manager *pqm, unsigned int qid, struct queue_properties *p) { + int retval; struct process_queue_node *pqn;
BUG_ON(!pqm); @@ -346,9 +347,17 @@ int pqm_update_queue(struct process_queue_manager *pqm, unsigned int qid, struct pqn->q->properties.queue_percent = p->queue_percent; pqn->q->properties.priority = p->priority;
- pqn->q->device->dqm->destroy_queues(pqn->q->device->dqm); - pqn->q->device->dqm->update_queue(pqn->q->device->dqm, pqn->q); - pqn->q->device->dqm->execute_queues(pqn->q->device->dqm); + retval = pqn->q->device->dqm->destroy_queues(pqn->q->device->dqm); + if (retval != 0) + return retval; + + retval = pqn->q->device->dqm->update_queue(pqn->q->device->dqm, pqn->q); + if (retval != 0) + return retval; + + retval = pqn->q->device->dqm->execute_queues(pqn->q->device->dqm); + if (retval != 0) + return retval;
return 0; }