nvme: fix irq vs io_queue calculations
authorJens Axboe <axboe@kernel.dk>
Sun, 9 Dec 2018 18:21:45 +0000 (11:21 -0700)
committerJens Axboe <axboe@kernel.dk>
Tue, 11 Dec 2018 13:27:46 +0000 (06:27 -0700)
commit6451fe73fa0f542a49bfacd7205b88a597897f58
tree406fb36da2ad3b799e26f383af39b10145475a63
parentb7934ba4147a883f7a1b32c6408179274a4d6ed1
nvme: fix irq vs io_queue calculations

Guenter reported an boot hang issue on HPPA after we default to 0 poll
queues. We have two issues in the queue count calculations:

1) We don't separate the poll queues from the read/write queues. This is
   important, since the former doesn't need interrupts.
2) The adjust logic is broken.

Adjust the poll queue count before doing nvme_calc_io_queues(). The poll
queue count is only limited by the IO queue count we were able to get
from the controller, not failures in the IRQ allocation loop. This
leaves nvme_calc_io_queues() just adjusting the read/write queue map.

Reported-by: Reported-by: Guenter Roeck <linux@roeck-us.net>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Sagi Grimberg <sagi@grimberg.me>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
drivers/nvme/host/pci.c