Skip to content

Commit

Permalink
NVMe: Let the kthread take care of devices earlier
Browse files Browse the repository at this point in the history
If interrupts are misconfigured, the kthread will be needed to process
admin queue completions.

Signed-off-by: Matthew Wilcox <matthew.r.wilcox@intel.com>
  • Loading branch information
Matthew Wilcox committed Nov 4, 2011
1 parent b348b7d commit 740216f
Showing 1 changed file with 10 additions and 4 deletions.
14 changes: 10 additions & 4 deletions drivers/block/nvme.c
Original file line number Diff line number Diff line change
Expand Up @@ -1112,6 +1112,8 @@ static int nvme_kthread(void *data)
int i;
for (i = 0; i < dev->queue_count; i++) {
struct nvme_queue *nvmeq = dev->queues[i];
if (!nvmeq)
continue;
spin_lock_irq(&nvmeq->q_lock);
if (nvme_process_cq(nvmeq))
printk("process_cq did something\n");
Expand Down Expand Up @@ -1437,17 +1439,21 @@ static int __devinit nvme_probe(struct pci_dev *pdev,
goto unmap;
dev->queue_count++;

result = nvme_dev_add(dev);
if (result)
goto delete;

spin_lock(&dev_list_lock);
list_add(&dev->node, &dev_list);
spin_unlock(&dev_list_lock);

result = nvme_dev_add(dev);
if (result)
goto delete;

return 0;

delete:
spin_lock(&dev_list_lock);
list_del(&dev->node);
spin_unlock(&dev_list_lock);

nvme_free_queues(dev);
unmap:
iounmap(dev->bar);
Expand Down

0 comments on commit 740216f

Please sign in to comment.