Re: [BUG] nvme driver crash
From: Shaohua Li <shli@kernel.org>
Date: 2017-07-26 22:29:52
On Wed, Jul 26, 2017 at 12:12:21PM -0700, Omar Sandoval wrote:
On Wed, Jul 26, 2017 at 10:34:43AM -0700, Christoph Hellwig wrote:quoted
On Tue, Jul 25, 2017 at 03:24:08PM -0700, Shaohua Li wrote:quoted
Disable CONIFG_SMP, kernel crashes at boot time, here is the log.I can reproduce the issue. Unfortunately the addresss in the bug doesn't make any sense to me when resolving it using gdb, as t just points to the line where blk_mq_init_queue calls blk_alloc_queue_node. Can you check if you get better results in your build?It's crashing on that line because ctrl->tagset is NULL, which is because... irq_create_affinity_masks() returns NULL on !CONFIG_SMP -> pci_irq_get_affinity() returns NULL -> blk_mq_pci_map_queues() returns -EINVAL -> blk_mq_alloc_tag_set() returns -EINVAL -> nvme_dev_add() doesn't set ctrl->tagset The two-fold fix would be to make the nvme driver handle blk_mq_alloc_tag_set() failing and to fall back to a dumb mapping in blk_mq_pci_map_queues(), but I don't know what the best way to do those is.
irq_create_affinity_masks returns null and prints error, could we fix that?