Skip to content

Commit 06c59d4

Browse files
tachyonwillkeithbusch
authored andcommitted
nvme-pci: set doorbell config before unquiescing
During resets, if queues are unquiesced first, then the host can submit IOs to the controller using shadow doorbell logic but the controller won't be aware. This can lead to necessary MMIO doorbells from being not issued, causing requests to be delayed and timed-out. Signed-off-by: William Butler <[email protected]> Signed-off-by: Keith Busch <[email protected]>
1 parent 9a1abc2 commit 06c59d4

File tree

1 file changed

+1
-1
lines changed

1 file changed

+1
-1
lines changed

drivers/nvme/host/pci.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2746,10 +2746,10 @@ static void nvme_reset_work(struct work_struct *work)
27462746
* controller around but remove all namespaces.
27472747
*/
27482748
if (dev->online_queues > 1) {
2749+
nvme_dbbuf_set(dev);
27492750
nvme_unquiesce_io_queues(&dev->ctrl);
27502751
nvme_wait_freeze(&dev->ctrl);
27512752
nvme_pci_update_nr_queues(dev);
2752-
nvme_dbbuf_set(dev);
27532753
nvme_unfreeze(&dev->ctrl);
27542754
} else {
27552755
dev_warn(dev->ctrl.device, "IO queues lost\n");

0 commit comments

Comments
 (0)