Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 286268
b: refs/heads/master
c: b348b7d
h: refs/heads/master
v: v3
  • Loading branch information
Matthew Wilcox committed Nov 4, 2011
1 parent 38e76da commit 8bbdab8
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 12 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: ca1615424c9adfdbe7d484771d7a7c5ecc4bb6d2
refs/heads/master: b348b7d54368c87811907a8e88f0d96713c43009
23 changes: 12 additions & 11 deletions trunk/drivers/block/nvme.c
Original file line number Diff line number Diff line change
Expand Up @@ -1202,29 +1202,30 @@ static int set_queue_count(struct nvme_dev *dev, int count)

static int __devinit nvme_setup_io_queues(struct nvme_dev *dev)
{
int result, cpu, i, nr_queues;
int result, cpu, i, nr_io_queues;

nr_queues = num_online_cpus();
result = set_queue_count(dev, nr_queues);
nr_io_queues = num_online_cpus();
result = set_queue_count(dev, nr_io_queues);
if (result < 0)
return result;
if (result < nr_queues)
nr_queues = result;
if (result < nr_io_queues)
nr_io_queues = result;

/* Deregister the admin queue's interrupt */
free_irq(dev->entry[0].vector, dev->queues[0]);

for (i = 0; i < nr_queues; i++)
for (i = 0; i < nr_io_queues; i++)
dev->entry[i].entry = i;
for (;;) {
result = pci_enable_msix(dev->pci_dev, dev->entry, nr_queues);
result = pci_enable_msix(dev->pci_dev, dev->entry,
nr_io_queues);
if (result == 0) {
break;
} else if (result > 0) {
nr_queues = result;
nr_io_queues = result;
continue;
} else {
nr_queues = 1;
nr_io_queues = 1;
break;
}
}
Expand All @@ -1233,12 +1234,12 @@ static int __devinit nvme_setup_io_queues(struct nvme_dev *dev)
/* XXX: handle failure here */

cpu = cpumask_first(cpu_online_mask);
for (i = 0; i < nr_queues; i++) {
for (i = 0; i < nr_io_queues; i++) {
irq_set_affinity_hint(dev->entry[i].vector, get_cpu_mask(cpu));
cpu = cpumask_next(cpu, cpu_online_mask);
}

for (i = 0; i < nr_queues; i++) {
for (i = 0; i < nr_io_queues; i++) {
dev->queues[i + 1] = nvme_create_queue(dev, i + 1,
NVME_Q_DEPTH, i);
if (!dev->queues[i + 1])
Expand Down

0 comments on commit 8bbdab8

Please sign in to comment.