diff options
Diffstat (limited to 'drivers/nvme/host/pci.c')
| -rw-r--r-- | drivers/nvme/host/pci.c | 9 | 
1 files changed, 8 insertions, 1 deletions
diff --git a/drivers/nvme/host/pci.c b/drivers/nvme/host/pci.c index 8dcf5a960951..60f7eab11865 100644 --- a/drivers/nvme/host/pci.c +++ b/drivers/nvme/host/pci.c @@ -1693,7 +1693,12 @@ static void nvme_dev_disable(struct nvme_dev *dev, bool shutdown)  		nvme_suspend_queue(dev->queues[i]);  	if (csts & NVME_CSTS_CFS || !(csts & NVME_CSTS_RDY)) { -		nvme_suspend_queue(dev->queues[0]); +		/* A device might become IO incapable very soon during +		 * probe, before the admin queue is configured. Thus, +		 * queue_count can be 0 here. +		 */ +		if (dev->queue_count) +			nvme_suspend_queue(dev->queues[0]);  	} else {  		nvme_disable_io_queues(dev);  		nvme_disable_admin_queue(dev, shutdown); @@ -2112,6 +2117,8 @@ static const struct pci_device_id nvme_id_table[] = {  		.driver_data = NVME_QUIRK_IDENTIFY_CNS, },  	{ PCI_DEVICE(0x1c58, 0x0003),	/* HGST adapter */  		.driver_data = NVME_QUIRK_DELAY_BEFORE_CHK_RDY, }, +	{ PCI_DEVICE(0x1c5f, 0x0540),	/* Memblaze Pblaze4 adapter */ +		.driver_data = NVME_QUIRK_DELAY_BEFORE_CHK_RDY, },  	{ PCI_DEVICE_CLASS(PCI_CLASS_STORAGE_EXPRESS, 0xffffff) },  	{ PCI_DEVICE(PCI_VENDOR_ID_APPLE, 0x2001) },  	{ 0, }  | 
