From owner-svn-src-all@FreeBSD.ORG Thu Jun 28 19:39:31 2012 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id A91A1106564A; Thu, 28 Jun 2012 19:39:31 +0000 (UTC) (envelope-from ken@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 88E6E8FC0C; Thu, 28 Jun 2012 19:39:31 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q5SJdV91094856; Thu, 28 Jun 2012 19:39:31 GMT (envelope-from ken@svn.freebsd.org) Received: (from ken@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q5SJdVJn094850; Thu, 28 Jun 2012 19:39:31 GMT (envelope-from ken@svn.freebsd.org) Message-Id: <201206281939.q5SJdVJn094850@svn.freebsd.org> From: "Kenneth D. Merry" Date: Thu, 28 Jun 2012 19:39:31 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r237726 - head/sys/cam/ctl X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 28 Jun 2012 19:39:31 -0000 Author: ken Date: Thu Jun 28 19:39:30 2012 New Revision: 237726 URL: http://svn.freebsd.org/changeset/base/237726 Log: Add a loader tunable, kern.cam.ctl.disable, that will disable loading CTL. This may be useful in very low memory installations. MFC after: 3 days Modified: head/sys/cam/ctl/ctl.c head/sys/cam/ctl/ctl_backend.c head/sys/cam/ctl/ctl_frontend_cam_sim.c head/sys/cam/ctl/ctl_frontend_internal.c head/sys/cam/ctl/scsi_ctl.c Modified: head/sys/cam/ctl/ctl.c ============================================================================== --- head/sys/cam/ctl/ctl.c Thu Jun 28 19:34:23 2012 (r237725) +++ head/sys/cam/ctl/ctl.c Thu Jun 28 19:39:30 2012 (r237726) @@ -308,7 +308,6 @@ static struct scsi_control_page control_ /*aen_holdoff_period*/{0, 0} }; -SYSCTL_NODE(_kern_cam, OID_AUTO, ctl, CTLFLAG_RD, 0, "CAM Target Layer"); /* * XXX KDM move these into the softc. @@ -318,7 +317,12 @@ static int persis_offset; static uint8_t ctl_pause_rtr; static int ctl_is_single; static int index_to_aps_page; +int ctl_disable = 0; +SYSCTL_NODE(_kern_cam, OID_AUTO, ctl, CTLFLAG_RD, 0, "CAM Target Layer"); +SYSCTL_INT(_kern_cam_ctl, OID_AUTO, disable, CTLFLAG_RDTUN, &ctl_disable, 0, + "Disable CTL"); +TUNABLE_INT("kern.cam.ctl.disable", &ctl_disable); /* * Serial number (0x80), device id (0x83), and supported pages (0x00) @@ -949,6 +953,10 @@ ctl_init(void) ctl_pause_rtr = 0; rcv_sync_msg = 0; + /* If we're disabled, don't initialize. */ + if (ctl_disable != 0) + return; + control_softc = malloc(sizeof(*control_softc), M_DEVBUF, M_WAITOK); softc = control_softc; Modified: head/sys/cam/ctl/ctl_backend.c ============================================================================== --- head/sys/cam/ctl/ctl_backend.c Thu Jun 28 19:34:23 2012 (r237725) +++ head/sys/cam/ctl/ctl_backend.c Thu Jun 28 19:39:30 2012 (r237726) @@ -62,6 +62,7 @@ __FBSDID("$FreeBSD$"); #include extern struct ctl_softc *control_softc; +extern int ctl_disable; int ctl_backend_register(struct ctl_backend_driver *be) @@ -71,6 +72,10 @@ ctl_backend_register(struct ctl_backend_ ctl_softc = control_softc; + /* Don't continue if CTL is disabled */ + if (ctl_disable != 0) + return (0); + mtx_lock(&ctl_softc->ctl_lock); /* * Sanity check, make sure this isn't a duplicate registration. Modified: head/sys/cam/ctl/ctl_frontend_cam_sim.c ============================================================================== --- head/sys/cam/ctl/ctl_frontend_cam_sim.c Thu Jun 28 19:34:23 2012 (r237725) +++ head/sys/cam/ctl/ctl_frontend_cam_sim.c Thu Jun 28 19:39:30 2012 (r237726) @@ -119,6 +119,7 @@ struct cfcs_softc cfcs_softc; * amount of SCSI sense data that we will report to CAM. */ static int cfcs_max_sense = sizeof(struct scsi_sense_data); +extern int ctl_disable; SYSINIT(cfcs_init, SI_SUB_CONFIGURE, SI_ORDER_FOURTH, cfcs_init, NULL); SYSCTL_NODE(_kern_cam, OID_AUTO, ctl2cam, CTLFLAG_RD, 0, @@ -138,6 +139,10 @@ cfcs_init(void) #endif int retval; + /* Don't continue if CTL is disabled */ + if (ctl_disable != 0) + return (0); + softc = &cfcs_softc; retval = 0; bzero(softc, sizeof(*softc)); Modified: head/sys/cam/ctl/ctl_frontend_internal.c ============================================================================== --- head/sys/cam/ctl/ctl_frontend_internal.c Thu Jun 28 19:34:23 2012 (r237725) +++ head/sys/cam/ctl/ctl_frontend_internal.c Thu Jun 28 19:39:30 2012 (r237726) @@ -187,6 +187,7 @@ struct cfi_softc { MALLOC_DEFINE(M_CTL_CFI, "ctlcfi", "CTL CFI"); static struct cfi_softc fetd_internal_softc; +extern int ctl_disable; void cfi_init(void); void cfi_shutdown(void) __unused; @@ -231,6 +232,10 @@ cfi_init(void) retval = 0; + /* If we're disabled, don't initialize */ + if (ctl_disable != 0) + return; + if (sizeof(struct cfi_lun_io) > CTL_PORT_PRIV_SIZE) { printf("%s: size of struct cfi_lun_io %zd > " "CTL_PORT_PRIV_SIZE %d\n", __func__, Modified: head/sys/cam/ctl/scsi_ctl.c ============================================================================== --- head/sys/cam/ctl/scsi_ctl.c Thu Jun 28 19:34:23 2012 (r237725) +++ head/sys/cam/ctl/scsi_ctl.c Thu Jun 28 19:39:30 2012 (r237726) @@ -227,12 +227,17 @@ static struct periph_driver ctlfe_driver PERIPHDRIVER_DECLARE(ctl, ctlfe_driver); extern struct ctl_softc *control_softc; +extern int ctl_disable; int ctlfeinitialize(void) { cam_status status; + /* Don't initialize if we're disabled */ + if (ctl_disable != 0) + return (0); + STAILQ_INIT(&ctlfe_softc_list); mtx_init(&ctlfe_list_mtx, ctlfe_mtx_desc, NULL, MTX_DEF); @@ -263,6 +268,10 @@ ctlfeinit(void) { cam_status status; + /* Don't initialize if we're disabled */ + if (ctl_disable != 0) + return; + STAILQ_INIT(&ctlfe_softc_list); mtx_init(&ctlfe_list_mtx, ctlfe_mtx_desc, NULL, MTX_DEF);