Module Name: src Committed By: pgoyette Date: Thu Apr 14 16:50:27 UTC 2022
Modified Files: src/sys/dev/iscsi: iscsi_main.c src/sys/dev/scsipi: files.scsipi scsiconf.c src/sys/modules: Makefile src/sys/rump/dev/lib/libscsipi: Makefile Added Files: src/sys/dev/scsipi: scsi_subr.c src/sys/modules/scsi_subr: Makefile Log Message: Split some common stuff into scsi_subr module. This enables loading of the iscsi module whether or not there are any scsi things built into the kernel. Addresses the iscsi portion of kern/56772 To generate a diff of this commit: cvs rdiff -u -r1.39 -r1.40 src/sys/dev/iscsi/iscsi_main.c cvs rdiff -u -r1.42 -r1.43 src/sys/dev/scsipi/files.scsipi cvs rdiff -u -r0 -r1.1 src/sys/dev/scsipi/scsi_subr.c cvs rdiff -u -r1.301 -r1.302 src/sys/dev/scsipi/scsiconf.c cvs rdiff -u -r1.264 -r1.265 src/sys/modules/Makefile cvs rdiff -u -r0 -r1.1 src/sys/modules/scsi_subr/Makefile cvs rdiff -u -r1.5 -r1.6 src/sys/rump/dev/lib/libscsipi/Makefile Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/dev/iscsi/iscsi_main.c diff -u src/sys/dev/iscsi/iscsi_main.c:1.39 src/sys/dev/iscsi/iscsi_main.c:1.40 --- src/sys/dev/iscsi/iscsi_main.c:1.39 Thu Mar 31 19:30:16 2022 +++ src/sys/dev/iscsi/iscsi_main.c Thu Apr 14 16:50:26 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: iscsi_main.c,v 1.39 2022/03/31 19:30:16 pgoyette Exp $ */ +/* $NetBSD: iscsi_main.c,v 1.40 2022/04/14 16:50:26 pgoyette Exp $ */ /*- * Copyright (c) 2004,2005,2006,2011 The NetBSD Foundation, Inc. @@ -656,7 +656,7 @@ SYSCTL_SETUP(sysctl_iscsi_setup, "ISCSI #include <sys/module.h> -MODULE(MODULE_CLASS_DRIVER, iscsi, NULL); /* Possibly a builtin module */ +MODULE(MODULE_CLASS_DRIVER, iscsi, "scsi_subr"); /* Possibly a builtin module */ #ifdef _MODULE static const struct cfiattrdata ibescsi_info = { "scsi", 1, Index: src/sys/dev/scsipi/files.scsipi diff -u src/sys/dev/scsipi/files.scsipi:1.42 src/sys/dev/scsipi/files.scsipi:1.43 --- src/sys/dev/scsipi/files.scsipi:1.42 Tue Feb 12 13:49:13 2019 +++ src/sys/dev/scsipi/files.scsipi Thu Apr 14 16:50:26 2022 @@ -1,4 +1,4 @@ -# $NetBSD: files.scsipi,v 1.42 2019/02/12 13:49:13 kardel Exp $ +# $NetBSD: files.scsipi,v 1.43 2022/04/14 16:50:26 pgoyette Exp $ # # Config file and device description for machine-independent SCSI code. # Included by ports that need it. Ports that use it must provide @@ -26,6 +26,7 @@ file dev/scsipi/atapi_wdc.c atapibus & device scsibus {[target = -1], [lun = -1]}: scsi_core attach scsibus at scsi file dev/scsipi/scsiconf.c scsibus needs-flag +file dev/scsipi/scsi_subr.c scsibus device atapibus {[drive = -1]} attach atapibus at atapi Index: src/sys/dev/scsipi/scsiconf.c diff -u src/sys/dev/scsipi/scsiconf.c:1.301 src/sys/dev/scsipi/scsiconf.c:1.302 --- src/sys/dev/scsipi/scsiconf.c:1.301 Sat Apr 9 23:38:32 2022 +++ src/sys/dev/scsipi/scsiconf.c Thu Apr 14 16:50:26 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: scsiconf.c,v 1.301 2022/04/09 23:38:32 riastradh Exp $ */ +/* $NetBSD: scsiconf.c,v 1.302 2022/04/14 16:50:26 pgoyette Exp $ */ /*- * Copyright (c) 1998, 1999, 2004 The NetBSD Foundation, Inc. @@ -48,7 +48,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: scsiconf.c,v 1.301 2022/04/09 23:38:32 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: scsiconf.c,v 1.302 2022/04/14 16:50:26 pgoyette Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -126,46 +126,6 @@ static int scsibusprint(void *, const ch static void scsibus_discover_thread(void *); static void scsibus_config(struct scsibus_softc *); -const struct scsipi_bustype scsi_bustype = { - .bustype_type = SCSIPI_BUSTYPE_BUSTYPE(SCSIPI_BUSTYPE_SCSI, - SCSIPI_BUSTYPE_SCSI_PSCSI), - .bustype_cmd = scsi_scsipi_cmd, - .bustype_interpret_sense = scsipi_interpret_sense, - .bustype_printaddr = scsi_print_addr, - .bustype_kill_pending = scsi_kill_pending, - .bustype_async_event_xfer_mode = scsi_async_event_xfer_mode, -}; - -const struct scsipi_bustype scsi_fc_bustype = { - .bustype_type = SCSIPI_BUSTYPE_BUSTYPE(SCSIPI_BUSTYPE_SCSI, - SCSIPI_BUSTYPE_SCSI_FC), - .bustype_cmd = scsi_scsipi_cmd, - .bustype_interpret_sense = scsipi_interpret_sense, - .bustype_printaddr = scsi_print_addr, - .bustype_kill_pending = scsi_kill_pending, - .bustype_async_event_xfer_mode = scsi_fc_sas_async_event_xfer_mode, -}; - -const struct scsipi_bustype scsi_sas_bustype = { - .bustype_type = SCSIPI_BUSTYPE_BUSTYPE(SCSIPI_BUSTYPE_SCSI, - SCSIPI_BUSTYPE_SCSI_SAS), - .bustype_cmd = scsi_scsipi_cmd, - .bustype_interpret_sense = scsipi_interpret_sense, - .bustype_printaddr = scsi_print_addr, - .bustype_kill_pending = scsi_kill_pending, - .bustype_async_event_xfer_mode = scsi_fc_sas_async_event_xfer_mode, -}; - -const struct scsipi_bustype scsi_usb_bustype = { - .bustype_type = SCSIPI_BUSTYPE_BUSTYPE(SCSIPI_BUSTYPE_SCSI, - SCSIPI_BUSTYPE_SCSI_USB), - .bustype_cmd = scsi_scsipi_cmd, - .bustype_interpret_sense = scsipi_interpret_sense, - .bustype_printaddr = scsi_print_addr, - .bustype_kill_pending = scsi_kill_pending, - .bustype_async_event_xfer_mode = NULL, -}; - static int scsibus_init(void) { @@ -176,23 +136,6 @@ scsibus_init(void) return 0; } -int -scsiprint(void *aux, const char *pnp) -{ - struct scsipi_channel *chan = aux; - struct scsipi_adapter *adapt = chan->chan_adapter; - - /* only "scsibus"es can attach to "scsi"s; easy. */ - if (pnp) - aprint_normal("scsibus at %s", pnp); - - /* don't print channel if the controller says there can be only one. */ - if (adapt->adapt_nchannels != 1) - aprint_normal(" channel %d", chan->chan_channel); - - return (UNCONF); -} - static int scsibusmatch(device_t parent, cfdata_t cf, void *aux) { Index: src/sys/modules/Makefile diff -u src/sys/modules/Makefile:1.264 src/sys/modules/Makefile:1.265 --- src/sys/modules/Makefile:1.264 Fri Apr 1 21:09:24 2022 +++ src/sys/modules/Makefile Thu Apr 14 16:50:26 2022 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile,v 1.264 2022/04/01 21:09:24 pgoyette Exp $ +# $NetBSD: Makefile,v 1.265 2022/04/14 16:50:26 pgoyette Exp $ .include <bsd.own.mk> @@ -146,9 +146,10 @@ SUBDIR+= ptyfs SUBDIR+= puffs SUBDIR+= putter SUBDIR+= raid -SUBDIR+= scsiverbose SUBDIR+= scmd SUBDIR+= scmdi2c +SUBDIR+= scsi_subr +SUBDIR+= scsiverbose SUBDIR+= sdtemp SUBDIR+= secmodel_bsd44 SUBDIR+= secmodel_extensions Index: src/sys/rump/dev/lib/libscsipi/Makefile diff -u src/sys/rump/dev/lib/libscsipi/Makefile:1.5 src/sys/rump/dev/lib/libscsipi/Makefile:1.6 --- src/sys/rump/dev/lib/libscsipi/Makefile:1.5 Tue Jan 26 23:12:16 2016 +++ src/sys/rump/dev/lib/libscsipi/Makefile Thu Apr 14 16:50:27 2022 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile,v 1.5 2016/01/26 23:12:16 pooka Exp $ +# $NetBSD: Makefile,v 1.6 2022/04/14 16:50:27 pgoyette Exp $ # .PATH: ${.CURDIR}/../../../../dev/scsipi @@ -9,7 +9,7 @@ COMMENT=SCSI & ATAPI mid-layer IOCONF= SCSIPI.ioconf SRCS+= scsipiconf.c scsipi_base.c scsipi_ioctl.c scsi_base.c scsiconf.c -SRCS+= atapi_base.c atapiconf.c +SRCS+= scsi_subr.c atapi_base.c atapiconf.c SRCS+= cd.c sd.c .if 1 Added files: Index: src/sys/dev/scsipi/scsi_subr.c diff -u /dev/null src/sys/dev/scsipi/scsi_subr.c:1.1 --- /dev/null Thu Apr 14 16:50:27 2022 +++ src/sys/dev/scsipi/scsi_subr.c Thu Apr 14 16:50:26 2022 @@ -0,0 +1,134 @@ +/* $NetBSD: scsi_subr.c,v 1.1 2022/04/14 16:50:26 pgoyette Exp $ */ + +/*- + * Copyright (c) 1998, 1999, 2004 The NetBSD Foundation, Inc. + * All rights reserved. + * + * This code is derived from software contributed to The NetBSD Foundation + * by Charles M. Hannum; Jason R. Thorpe of the Numerical Aerospace + * Simulation Facility, NASA Ames Research Center. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS + * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +/* + * Originally written by Julian Elischer (jul...@tfs.com) + * for TRW Financial Systems for use under the MACH(2.5) operating system. + * + * TRW Financial Systems, in accordance with their agreement with Carnegie + * Mellon University, makes this software available to CMU to distribute + * or use in any manner that they see fit as long as this message is kept with + * the software. For this reason TFS also grants any other persons or + * organisations permission to use or modify this software. + * + * TFS supplies this software to be publicly redistributed + * on the understanding that TFS is not responsible for the correct + * functioning of this software in any circumstances. + * + * Ported to run under 386BSD by Julian Elischer (jul...@tfs.com) Sept 1992 + */ + +#include <sys/cdefs.h> +__KERNEL_RCSID(0, "$NetBSD: scsi_subr.c,v 1.1 2022/04/14 16:50:26 pgoyette Exp $"); + +#include <sys/param.h> +#include <sys/systm.h> + +#include <sys/device.h> +#include <sys/kernel.h> +#include <sys/proc.h> +#include <sys/module.h> + +#include <dev/scsipi/scsi_all.h> +#include <dev/scsipi/scsipi_all.h> +#include <dev/scsipi/scsiconf.h> + +const struct scsipi_bustype scsi_bustype = { + .bustype_type = SCSIPI_BUSTYPE_BUSTYPE(SCSIPI_BUSTYPE_SCSI, + SCSIPI_BUSTYPE_SCSI_PSCSI), + .bustype_cmd = scsi_scsipi_cmd, + .bustype_interpret_sense = scsipi_interpret_sense, + .bustype_printaddr = scsi_print_addr, + .bustype_kill_pending = scsi_kill_pending, + .bustype_async_event_xfer_mode = scsi_async_event_xfer_mode, +}; + +const struct scsipi_bustype scsi_fc_bustype = { + .bustype_type = SCSIPI_BUSTYPE_BUSTYPE(SCSIPI_BUSTYPE_SCSI, + SCSIPI_BUSTYPE_SCSI_FC), + .bustype_cmd = scsi_scsipi_cmd, + .bustype_interpret_sense = scsipi_interpret_sense, + .bustype_printaddr = scsi_print_addr, + .bustype_kill_pending = scsi_kill_pending, + .bustype_async_event_xfer_mode = scsi_fc_sas_async_event_xfer_mode, +}; + +const struct scsipi_bustype scsi_sas_bustype = { + .bustype_type = SCSIPI_BUSTYPE_BUSTYPE(SCSIPI_BUSTYPE_SCSI, + SCSIPI_BUSTYPE_SCSI_SAS), + .bustype_cmd = scsi_scsipi_cmd, + .bustype_interpret_sense = scsipi_interpret_sense, + .bustype_printaddr = scsi_print_addr, + .bustype_kill_pending = scsi_kill_pending, + .bustype_async_event_xfer_mode = scsi_fc_sas_async_event_xfer_mode, +}; + +const struct scsipi_bustype scsi_usb_bustype = { + .bustype_type = SCSIPI_BUSTYPE_BUSTYPE(SCSIPI_BUSTYPE_SCSI, + SCSIPI_BUSTYPE_SCSI_USB), + .bustype_cmd = scsi_scsipi_cmd, + .bustype_interpret_sense = scsipi_interpret_sense, + .bustype_printaddr = scsi_print_addr, + .bustype_kill_pending = scsi_kill_pending, + .bustype_async_event_xfer_mode = NULL, +}; + +int +scsiprint(void *aux, const char *pnp) +{ + struct scsipi_channel *chan = aux; + struct scsipi_adapter *adapt = chan->chan_adapter; + + /* only "scsibus"es can attach to "scsi"s; easy. */ + if (pnp) + aprint_normal("scsibus at %s", pnp); + + /* don't print channel if the controller says there can be only one. */ + if (adapt->adapt_nchannels != 1) + aprint_normal(" channel %d", chan->chan_channel); + + return (UNCONF); +} + +MODULE(MODULE_CLASS_EXEC, scsi_subr, NULL); + +static int scsi_subr_modcmd(modcmd_t cmd, void *opaque) +{ + + switch(cmd) { + case MODULE_CMD_INIT: + case MODULE_CMD_FINI: + return 0; + default: + return ENOTTY; + } +} Index: src/sys/modules/scsi_subr/Makefile diff -u /dev/null src/sys/modules/scsi_subr/Makefile:1.1 --- /dev/null Thu Apr 14 16:50:27 2022 +++ src/sys/modules/scsi_subr/Makefile Thu Apr 14 16:50:26 2022 @@ -0,0 +1,10 @@ +# $NetBSD: Makefile,v 1.1 2022/04/14 16:50:26 pgoyette Exp $ + +.include "../Makefile.inc" + +.PATH: ${S}/dev/scsipi/ + +KMOD= scsi_subr +SRCS= scsi_subr.c scsi_base.c + +.include <bsd.kmodule.mk>