Date: Tue, 26 Mar 2013 18:34:20 +0000 (UTC) From: Jim Harris <jimharris@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r248736 - head/sys/dev/nvme Message-ID: <201303261834.r2QIYK5V064075@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
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);
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201303261834.r2QIYK5V064075>