unsigned long to;
        bool active = true;
 
-       blk_mq_stop_hw_queues(port->dd->queue);
+       blk_mq_quiesce_queue(port->dd->queue);
 
        to = jiffies + msecs_to_jiffies(timeout);
        do {
                        break;
        } while (time_before(jiffies, to));
 
-       blk_mq_start_stopped_hw_queues(port->dd->queue, true);
+       blk_mq_unquiesce_queue(port->dd->queue);
        return active ? -EBUSY : 0;
 err_fault:
-       blk_mq_start_stopped_hw_queues(port->dd->queue, true);
+       blk_mq_unquiesce_queue(port->dd->queue);
        return -EFAULT;
 }
 
        struct mtip_cmd *cmd = blk_mq_rq_to_pdu(req);
        struct driver_data *dd = data;
 
+       if (!blk_mq_request_started(req))
+               return;
+
        dbg_printk(MTIP_DRV_NAME " Aborting request, tag = %d\n", req->tag);
 
        clear_bit(req->tag, dd->port->cmds_to_issue);
 {
        struct driver_data *dd = data;
 
+       if (!blk_mq_request_started(req))
+               return;
+
        set_bit(req->tag, dd->port->cmds_to_issue);
        blk_abort_request(req);
 }
                                dev_warn(&dd->pdev->dev,
                                        "Completion workers still active!");
 
+                       blk_mq_quiesce_queue(dd->queue);
+
                        spin_lock(dd->queue->queue_lock);
                        blk_mq_tagset_busy_iter(&dd->tags,
                                                        mtip_queue_cmd, dd);
                                                        mtip_abort_cmd, dd);
 
                        clear_bit(MTIP_PF_TO_ACTIVE_BIT, &dd->port->flags);
+
+                       blk_mq_unquiesce_queue(dd->queue);
                }
 
                if (test_bit(MTIP_PF_ISSUE_CMDS_BIT, &port->flags)) {
                                                dd->disk->disk_name);
 
        blk_freeze_queue_start(dd->queue);
-       blk_mq_stop_hw_queues(dd->queue);
+       blk_mq_quiesce_queue(dd->queue);
        blk_mq_tagset_busy_iter(&dd->tags, mtip_no_dev_cleanup, dd);
+       blk_mq_unquiesce_queue(dd->queue);
 
        /*
         * Delete our gendisk structure. This also removes the device