diff options
author | Warner Losh <imp@FreeBSD.org> | 2019-08-22 20:09:32 +0000 |
---|---|---|
committer | Warner Losh <imp@FreeBSD.org> | 2019-08-22 20:09:32 +0000 |
commit | ec743e0c33f4f2889479caa06c565eabe8aec082 (patch) | |
tree | 9a682a27bdeac34e16955e45cca493aa80508261 /sys/dev/nvme | |
parent | 92a8983babc3effa5b7339864521857b5f284805 (diff) | |
download | src-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.c | 4 |
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 |