aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/block/nvme-core.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2014-04-01 22:43:53 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2014-04-01 22:43:53 -0400
commitb33ce442993865180292df2a314ee5251ba38b50 (patch)
tree004b703ea3cd19c932393086fe9cde96e8db8de7 /drivers/block/nvme-core.c
parent7a48837732f87a574ee3e1855927dc250117f565 (diff)
parente84987a1f941b8e2e3173bb38510ddf25cc8c7f0 (diff)
Merge branch 'for-3.15/drivers' of git://git.kernel.dk/linux-block
Pull block driver update from Jens Axboe: "On top of the core pull request, here's the pull request for the driver related changes for 3.15. It contains: - Improvements for msi-x registration for block drivers (mtip32xx, skd, cciss, nvme) from Alexander Gordeev. - A round of cleanups and improvements for drbd from Andreas Gruenbacher and Rashika Kheria. - A round of clanups and improvements for bcache from Kent. - Removal of sleep_on() and friends in DAC960, ataflop, swim3 from Arnd Bergmann. - Bug fix for a bug in the mtip32xx async completion code from Sam Bradshaw. - Bug fix for accidentally bouncing IO on 32-bit platforms with mtip32xx from Felipe Franciosi" * 'for-3.15/drivers' of git://git.kernel.dk/linux-block: (103 commits) bcache: remove nested function usage bcache: Kill bucket->gc_gen bcache: Kill unused freelist bcache: Rework btree cache reserve handling bcache: Kill btree_io_wq bcache: btree locking rework bcache: Fix a race when freeing btree nodes bcache: Add a real GC_MARK_RECLAIMABLE bcache: Add bch_keylist_init_single() bcache: Improve priority_stats bcache: Better alloc tracepoints bcache: Kill dead cgroup code bcache: stop moving_gc marking buckets that can't be moved. bcache: Fix moving_pred() bcache: Fix moving_gc deadlocking with a foreground write bcache: Fix discard granularity bcache: Fix another bug recovering from unclean shutdown bcache: Fix a bug recovering from unclean shutdown bcache: Fix a journalling reclaim after recovery bug bcache: Fix a null ptr deref in journal replay ...
Diffstat (limited to 'drivers/block/nvme-core.c')
-rw-r--r--drivers/block/nvme-core.c33
1 files changed, 9 insertions, 24 deletions
diff --git a/drivers/block/nvme-core.c b/drivers/block/nvme-core.c
index 8459e4e7c719..da085ff10d25 100644
--- a/drivers/block/nvme-core.c
+++ b/drivers/block/nvme-core.c
@@ -1836,31 +1836,16 @@ static int nvme_setup_io_queues(struct nvme_dev *dev)
1836 /* Deregister the admin queue's interrupt */ 1836 /* Deregister the admin queue's interrupt */
1837 free_irq(dev->entry[0].vector, adminq); 1837 free_irq(dev->entry[0].vector, adminq);
1838 1838
1839 vecs = nr_io_queues; 1839 for (i = 0; i < nr_io_queues; i++)
1840 for (i = 0; i < vecs; i++)
1841 dev->entry[i].entry = i; 1840 dev->entry[i].entry = i;
1842 for (;;) { 1841 vecs = pci_enable_msix_range(pdev, dev->entry, 1, nr_io_queues);
1843 result = pci_enable_msix(pdev, dev->entry, vecs); 1842 if (vecs < 0) {
1844 if (result <= 0) 1843 vecs = pci_enable_msi_range(pdev, 1, min(nr_io_queues, 32));
1845 break; 1844 if (vecs < 0) {
1846 vecs = result; 1845 vecs = 1;
1847 } 1846 } else {
1848 1847 for (i = 0; i < vecs; i++)
1849 if (result < 0) { 1848 dev->entry[i].vector = i + pdev->irq;
1850 vecs = nr_io_queues;
1851 if (vecs > 32)
1852 vecs = 32;
1853 for (;;) {
1854 result = pci_enable_msi_block(pdev, vecs);
1855 if (result == 0) {
1856 for (i = 0; i < vecs; i++)
1857 dev->entry[i].vector = i + pdev->irq;
1858 break;
1859 } else if (result < 0) {
1860 vecs = 1;
1861 break;
1862 }
1863 vecs = result;
1864 } 1849 }
1865 } 1850 }
1866 1851