aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/nvme
diff options
context:
space:
mode:
authorWarner Losh <imp@FreeBSD.org>2019-08-22 20:09:32 +0000
committerWarner Losh <imp@FreeBSD.org>2019-08-22 20:09:32 +0000
commitec743e0c33f4f2889479caa06c565eabe8aec082 (patch)
tree9a682a27bdeac34e16955e45cca493aa80508261 /sys/dev/nvme
parent92a8983babc3effa5b7339864521857b5f284805 (diff)
downloadsrc-ec743e0c33f4f2889479caa06c565eabe8aec082.tar.gz
src-ec743e0c33f4f2889479caa06c565eabe8aec082.zip
Move releasing of resources to later
Turn off bus master after we detach the device (to match the prior order). Release MSI after we're done detaching and have turned off all the interrupts. Otherwise this may cause problems as other threads race nvme_detach. This more closely matches the old order. Reviewed by: mav@
Notes
Notes: svn path=/head/; revision=351403
Diffstat (limited to 'sys/dev/nvme')
-rw-r--r--sys/dev/nvme/nvme_pci.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/sys/dev/nvme/nvme_pci.c b/sys/dev/nvme/nvme_pci.c
index 358c840a1f90..8b87f6a8edaf 100644
--- a/sys/dev/nvme/nvme_pci.c
+++ b/sys/dev/nvme/nvme_pci.c
@@ -215,11 +215,13 @@ static int
nvme_pci_detach(device_t dev)
{
struct nvme_controller*ctrlr = DEVICE2SOFTC(dev);
+ int rv;
+ rv = nvme_detach(dev);
if (ctrlr->msix_enabled)
pci_release_msi(dev);
pci_disable_busmaster(dev);
- return (nvme_detach(dev));
+ return (rv);
}
static int