svn commit: r248736 - head/sys/dev/nvme
Jim Harris
jimharris at FreeBSD.org
Tue Mar 26 18:34:20 UTC 2013
Author: jimharris
Date: Tue Mar 26 18:34:19 2013
New Revision: 248736
URL: http://svnweb.freebsd.org/changeset/base/248736
Log:
Move controller destruction code from nvme_detach() to new nvme_ctrlr_destruct()
function.
Sponsored by: Intel
Modified:
head/sys/dev/nvme/nvme.c
head/sys/dev/nvme/nvme_ctrlr.c
head/sys/dev/nvme/nvme_private.h
Modified: head/sys/dev/nvme/nvme.c
==============================================================================
--- head/sys/dev/nvme/nvme.c Tue Mar 26 18:31:46 2013 (r248735)
+++ head/sys/dev/nvme/nvme.c Tue Mar 26 18:34:19 2013 (r248736)
@@ -286,53 +286,8 @@ static int
nvme_detach (device_t dev)
{
struct nvme_controller *ctrlr = DEVICE2SOFTC(dev);
- struct nvme_namespace *ns;
- int i;
-
- for (i = 0; i < NVME_MAX_NAMESPACES; i++) {
- ns = &ctrlr->ns[i];
- if (ns->cdev)
- destroy_dev(ns->cdev);
- }
-
- if (ctrlr->cdev)
- destroy_dev(ctrlr->cdev);
-
- for (i = 0; i < ctrlr->num_io_queues; i++) {
- nvme_io_qpair_destroy(&ctrlr->ioq[i]);
- }
-
- free(ctrlr->ioq, M_NVME);
-
- nvme_admin_qpair_destroy(&ctrlr->adminq);
-
- if (ctrlr->resource != NULL) {
- bus_release_resource(dev, SYS_RES_MEMORY,
- ctrlr->resource_id, ctrlr->resource);
- }
-
- if (ctrlr->bar4_resource != NULL) {
- bus_release_resource(dev, SYS_RES_MEMORY,
- ctrlr->bar4_resource_id, ctrlr->bar4_resource);
- }
-
-#ifdef CHATHAM2
- if (ctrlr->chatham_resource != NULL) {
- bus_release_resource(dev, SYS_RES_MEMORY,
- ctrlr->chatham_resource_id, ctrlr->chatham_resource);
- }
-#endif
-
- if (ctrlr->tag)
- bus_teardown_intr(ctrlr->dev, ctrlr->res, ctrlr->tag);
-
- if (ctrlr->res)
- bus_release_resource(ctrlr->dev, SYS_RES_IRQ,
- rman_get_rid(ctrlr->res), ctrlr->res);
-
- if (ctrlr->msix_enabled)
- pci_release_msi(dev);
+ nvme_ctrlr_destruct(ctrlr, dev);
return (0);
}
Modified: head/sys/dev/nvme/nvme_ctrlr.c
==============================================================================
--- head/sys/dev/nvme/nvme_ctrlr.c Tue Mar 26 18:31:46 2013 (r248735)
+++ head/sys/dev/nvme/nvme_ctrlr.c Tue Mar 26 18:34:19 2013 (r248736)
@@ -808,6 +808,57 @@ intx:
}
void
+nvme_ctrlr_destruct(struct nvme_controller *ctrlr, device_t dev)
+{
+ struct nvme_namespace *ns;
+ int i;
+
+ for (i = 0; i < NVME_MAX_NAMESPACES; i++) {
+ ns = &ctrlr->ns[i];
+ if (ns->cdev)
+ destroy_dev(ns->cdev);
+ }
+
+ if (ctrlr->cdev)
+ destroy_dev(ctrlr->cdev);
+
+ for (i = 0; i < ctrlr->num_io_queues; i++) {
+ nvme_io_qpair_destroy(&ctrlr->ioq[i]);
+ }
+
+ free(ctrlr->ioq, M_NVME);
+
+ nvme_admin_qpair_destroy(&ctrlr->adminq);
+
+ if (ctrlr->resource != NULL) {
+ bus_release_resource(dev, SYS_RES_MEMORY,
+ ctrlr->resource_id, ctrlr->resource);
+ }
+
+ if (ctrlr->bar4_resource != NULL) {
+ bus_release_resource(dev, SYS_RES_MEMORY,
+ ctrlr->bar4_resource_id, ctrlr->bar4_resource);
+ }
+
+#ifdef CHATHAM2
+ if (ctrlr->chatham_resource != NULL) {
+ bus_release_resource(dev, SYS_RES_MEMORY,
+ ctrlr->chatham_resource_id, ctrlr->chatham_resource);
+ }
+#endif
+
+ if (ctrlr->tag)
+ bus_teardown_intr(ctrlr->dev, ctrlr->res, ctrlr->tag);
+
+ if (ctrlr->res)
+ bus_release_resource(ctrlr->dev, SYS_RES_IRQ,
+ rman_get_rid(ctrlr->res), ctrlr->res);
+
+ if (ctrlr->msix_enabled)
+ pci_release_msi(dev);
+}
+
+void
nvme_ctrlr_submit_admin_request(struct nvme_controller *ctrlr,
struct nvme_request *req)
{
Modified: head/sys/dev/nvme/nvme_private.h
==============================================================================
--- head/sys/dev/nvme/nvme_private.h Tue Mar 26 18:31:46 2013 (r248735)
+++ head/sys/dev/nvme/nvme_private.h Tue Mar 26 18:34:19 2013 (r248736)
@@ -358,6 +358,7 @@ void nvme_payload_map_uio(void *arg, bus
bus_size_t mapsize, int error);
int nvme_ctrlr_construct(struct nvme_controller *ctrlr, device_t dev);
+void nvme_ctrlr_destruct(struct nvme_controller *ctrlr, device_t dev);
int nvme_ctrlr_reset(struct nvme_controller *ctrlr);
/* ctrlr defined as void * to allow use with config_intrhook. */
void nvme_ctrlr_start(void *ctrlr_arg);
More information about the svn-src-all
mailing list