return 0;
 }
 
-static int unmap_sdma_queues(struct device_queue_manager *dqm,
-                               unsigned int sdma_engine)
+static int unmap_sdma_queues(struct device_queue_manager *dqm)
 {
-       return pm_send_unmap_queue(&dqm->packets, KFD_QUEUE_TYPE_SDMA,
-                       KFD_UNMAP_QUEUES_FILTER_DYNAMIC_QUEUES, 0, false,
-                       sdma_engine);
+       int i, retval = 0;
+
+       for (i = 0; i < dqm->dev->device_info->num_sdma_engines; i++) {
+               retval = pm_send_unmap_queue(&dqm->packets, KFD_QUEUE_TYPE_SDMA,
+                       KFD_UNMAP_QUEUES_FILTER_DYNAMIC_QUEUES, 0, false, i);
+               if (retval)
+                       return retval;
+       }
+       return retval;
 }
 
 /* dqm->lock mutex has to be locked before calling this function */
        pr_debug("Before destroying queues, sdma queue count is : %u\n",
                dqm->sdma_queue_count);
 
-       if (dqm->sdma_queue_count > 0) {
-               unmap_sdma_queues(dqm, 0);
-               unmap_sdma_queues(dqm, 1);
-       }
+       if (dqm->sdma_queue_count > 0)
+               unmap_sdma_queues(dqm);
 
        retval = pm_send_unmap_queue(&dqm->packets, KFD_QUEUE_TYPE_COMPUTE,
                        filter, filter_param, false, 0);