]> git.kernelconcepts.de Git - karo-tx-linux.git/commit
NVMe: Always use MSI/MSI-x interrupts
authorKeith Busch <keith.busch@intel.com>
Fri, 8 Apr 2016 22:09:10 +0000 (16:09 -0600)
committerJens Axboe <axboe@fb.com>
Tue, 12 Apr 2016 19:44:00 +0000 (13:44 -0600)
commit788e15abbb9408c9399d7e3445ac9afb3b2fd7d6
tree39a05fb007574db3ad1b7f8f329114042883a162
parente0489487ec9cd79ee1fa0dc5d3789c08b0e51a2c
NVMe: Always use MSI/MSI-x interrupts

Multiple users have reported device initialization failure due the driver
not receiving legacy PCI interrupts. This is not unique to any particular
controller, but has been observed on multiple platforms.

There have been no issues reported or observed when with message signaled
interrupts, so this patch attempts to use MSI-x during initialization,
falling back to MSI. If that fails, legacy would become the default.

The setup_io_queues error handling had to change as a result: the admin
queue's msix_entry used to be initialized to the legacy IRQ. The case
where nr_io_queues is 0 would fail request_irq when setting up the admin
queue's interrupt since re-enabling MSI-x fails with 0 vectors, leaving
the admin queue's msix_entry invalid. Instead, return success immediately.

Reported-by: Tim Muhlemmer <muhlemmer@gmail.com>
Reported-by: Jon Derrick <jonathan.derrick@intel.com>
Signed-off-by: Keith Busch <keith.busch@intel.com>
Signed-off-by: Jens Axboe <axboe@fb.com>
drivers/nvme/host/pci.c