| 1007 | } |
| 1008 | |
| 1009 | static void nvme_remove_io_queues(struct rt_nvme_controller *nvme) |
| 1010 | { |
| 1011 | int irq; |
| 1012 | struct rt_nvme_queue *queue; |
| 1013 | |
| 1014 | for (int i = 0, irq_idx = 1; i < nvme->io_queue_max; ++i, ++irq_idx) |
| 1015 | { |
| 1016 | queue = &nvme->io_queues[i]; |
| 1017 | |
| 1018 | nvme_detach_queue(queue, RT_NVME_ADMIN_OPCODE_DELETE_SQ); |
| 1019 | nvme_detach_queue(queue, RT_NVME_ADMIN_OPCODE_DELETE_CQ); |
| 1020 | nvme_free_queue(queue); |
| 1021 | |
| 1022 | irq = nvme->irqs[irq_idx % nvme->irqs_nr]; |
| 1023 | |
| 1024 | rt_hw_interrupt_mask(irq); |
| 1025 | rt_pic_detach_irq(irq, queue); |
| 1026 | } |
| 1027 | } |
| 1028 | |
| 1029 | static void nvme_remove_admin_queues(struct rt_nvme_controller *nvme) |
| 1030 | { |
no test coverage detected