Home | History | Annotate | Download | only in scsipi
History log of /src/sys/dev/scsipi/st_scsi.c
RevisionDateAuthorComments
 1.37  24-Aug-2015  pooka would you like some freshly ground _KERNEL_OPT with that?
yes? excellent choice, sir/madam.
 1.36  18-Oct-2014  snj branches: 1.36.2;
src is too big these days to tolerate superfluous apostrophes. It's
"its", people!
 1.35  19-Apr-2012  bouyer branches: 1.35.2;
Expand struct scsipi_bustype {} in a ABI-backward-compatible way to
pass more informations about the bus:
- bustype_type has 2 different bytes, one holding the existing
SCSIPI_BUSTYPE_* (scsi, atapi, ata), and one for a per-SCSIPI_BUSTYPE_*
subtype. Introduce macros to build or extract bustype_type.
- for SCSIPI_BUSTYPE_SCSI, define subtypes for parallel SCSI, Fibre Channel,
SAS and USB, to specify the transport method. SCSIPI_BUSTYPE_SCSI_PSCSI
is 0 so that bustype_type value doesn't change for existing code
- for non-SCSIPI_BUSTYPE_SCSI busses there's no defined subtype yet,
so the bustype_type value doesn't change.
- provide scsi_fc_bustype, scsi_sas_bustype and scsi_usb_bustype
along with scsi_bustype to be used by bus driver where appropriate
- scsipi_print_xfer_mode(): more existing code under a
(SCSIPI_BUSTYPE_SCSI, SCSIPI_BUSTYPE_SCSI_PSCSI) case, as
sync/wide parameters only make sense for parallel SCSI.
For (SCSIPI_BUSTYPE_SCSI, SCSIPI_BUSTYPE_SCSI_FC) and
(SCSIPI_BUSTYPE_SCSI, SCSIPI_BUSTYPE_SCSI_SAS), only print
tagged queing status if enabled. Just be silent for other
bustypes.

This change is prompted by this problem:
right now, FC (e.g. isp(4)) and SAS (e.g. mfi(4)) don't
do anything for ADAPTER_REQ_SET_XFER_MODE, and especially never
call scsipi_async_event(ASYNC_EVENT_XFER_MODE), so sd(4) always
runs untagged. Doing a scsipi_async_event(ASYNC_EVENT_XFER_MODE) with
appropriate parameters is enough to enable tagged queuing,
but then scsipi will print:
sd0: async, 8-bit transfers, tagged queueing
which is harmless (async, 8-bit transfers doens't make sense on SAS anyway)
but will confuse users. With this change scsipi will only print:
sd0: tagged queueing
which is correct.

In the long run, knowning the underlying transport in scsipi will
allow better handling of device which are not parallel SCSI.

Another change adding an extra callback to struct scsipi_bustype {}
will come (so that scsipi_print_xfer_mode(), which is SCSI-specific,
can be moved out of scsipi_base, and split into per-subtype callback),
but this will break kernel ABI and so is not suitable for
netbsd-6, so will be commmited later. The above is enough to get
tagged queuing on FC and SAS in netbsd-6.
 1.34  28-Feb-2012  mbalmer Convert st(4) to device_t, while here clean up the code and use uintXX_t
instead of u_intXX_t.
 1.33  02-Feb-2012  tls branches: 1.33.2;
Entropy-pool implementation move and cleanup.

1) Move core entropy-pool code and source/sink/sample management code
to sys/kern from sys/dev.

2) Remove use of NRND as test for presence of entropy-pool code throughout
source tree.

3) Remove use of RND_ENABLED in device drivers as microoptimization to
avoid expensive operations on disabled entropy sources; make the
rnd_add calls do this directly so all callers benefit.

4) Fix bug in recent rnd_add_data()/rnd_add_uint32() changes that might
have lead to slight entropy overestimation for some sources.

5) Add new source types for environmental sensors, power sensors, VM
system events, and skew between clocks, with a sample implementation
for each.

ok releng to go in before the branch due to the difficulty of later
pullup (widespread #ifdef removal and moved files). Tested with release
builds on amd64 and evbarm and live testing on amd64.
 1.32  06-Dec-2009  dyoung branches: 1.32.12; 1.32.16;
Delete do-nothing device-activation hooks.
 1.31  21-Oct-2009  rmind Remove uarea swap-out functionality:

- Addresses the issue described in PR/38828.
- Some simplification in threading and sleepq subsystems.
- Eliminates pmap_collect() and, as a side note, allows pmap optimisations.
- Eliminates XS_CTL_DATA_ONSTACK in scsipi code.
- Avoids few scans on LWP list and thus potentially long holds of proc_lock.
- Cuts ~1.5k lines of code. Reduces amd64 kernel size by ~4k.
- Removes __SWAP_BROKEN cases.

Tested on x86, mips, acorn32 (thanks <mpumford>) and partly tested on
acorn26 (thanks to <bjh21>).

Discussed on <tech-kern>, reviewed by <ad>.
 1.30  15-Aug-2009  pgoyette 1. Move the mode_select functionality into common code (in st.c) and
invoke the common routine for both scsi and atapi tapes.

2. Replace a numeric constant with some sizeof's when calculating the
size of the mode_select command buffer, clear the entire buffer, and
KASSERT to ensure the page_0_size loaded from quirk table is valid.

3. Add a quirk for my Seagate Travan-40 tape drive.

As discussed on tech-kern@

Addresses my PR kern/34832
 1.29  12-May-2009  cegger struct device * -> device_t, no functional changes intended.
 1.28  12-May-2009  cegger struct cfdata * -> cfdata_t, no functional changes intended.
 1.27  28-Apr-2008  martin branches: 1.27.14;
Remove clause 3 and 4 from TNF licenses
 1.26  16-Nov-2006  christos branches: 1.26.48; 1.26.50; 1.26.52;
__unused removal on arguments; approved by core.
 1.25  12-Oct-2006  christos - sprinkle __unused on function decls.
- fix a couple of unused bugs
- no more -Wno-unused for i386
 1.24  30-Mar-2006  thorpej branches: 1.24.8; 1.24.10;
Use device_private().
 1.23  11-Dec-2005  christos branches: 1.23.4; 1.23.6; 1.23.8; 1.23.10; 1.23.12;
merge ktrace-lwp.
 1.22  30-May-2005  christos branches: 1.22.2;
- remove bogus casts
- add more const
 1.21  27-Feb-2005  perry nuke trailing whitespace
 1.20  21-Feb-2005  thorpej Part 1 of a cleanup pass over the SCSI subsystem. The aim is to name
everything "scsi_*", since we really are talking about the SCSI command
set, ATAPI transport not withstanding. Improve the names of many structures,
and prepend "SCSI_" onto all SCSI command opcodes. Place items described
by the SCSI Primary Commands document into scsi_spc.h.
 1.19  01-Feb-2005  reinoud Backing out changes to clean up scsipi. I was pointed out there were
problems i hadn't seen. To prevent lossage i'd decided to back off all
changes and let them be reviewed on tech-kern.
 1.18  31-Jan-2005  reinoud Part of the cleanup of sys/scsipi's use of types; rename all u_int* to
uint* and change the u_long's to uint32_t's where possible. Note that the
iocl definitions/hooks have to be ulong (or u_long) or they'll bomb out.
 1.17  31-Jan-2005  reinoud As part of cleaning up sys/scsipi, replace all u_char by uint8_t and
replace all `short' with int16_t.
 1.16  28-Oct-2004  yamt branches: 1.16.4; 1.16.6;
move buffer queue related stuffs from buf.h to their own header, bufq.h.
 1.15  18-Sep-2004  mycroft Minor rearrangement. Whitespace and #include cleanup.
 1.14  18-Sep-2004  mycroft Standardize some variable names and the calling pattern for scsipi_command().
Use void pointer casts.
 1.13  17-Sep-2004  mycroft Remove the "xfer" argument to scsipi_command().
 1.12  09-Sep-2004  bouyer Make the xxstart() functions reentrant again, as some drivers HBA can call
scsipi_done() from their scsipi_request().
For this, add a struct scsipi_xfer * argument to scsipi_command().
If not NULL scsipi_command() will use this to enqueue this xfer, otherwise
it'll try to allocate a new one. This scsipi_xfer has to be allocated
and initialised by scsipi_make_xs() or equivalent.
In xxstart(), allocate a scsipi_xfer using scsipi_make_xs(), and if not NULL,
dequeue the buffer before calling scsipi_command(). This makes sure that
scsipi_command() will not fail, and also makes sure that xxstart() won't
be called again between the BUFQ_PEEK() and BUFQ_GET().

Fix "dequeued wrong buf" panics reported by Juergen Hannken-Illjes in
private mail and Andreas Wrede on current-users@.
Thanks to Jason Thorpe and Chuck Silver for review, and Andreas Wrede for
testing the patch.
 1.11  21-Aug-2004  thorpej Use ANSI function decls and make use of static.
 1.10  02-Oct-2002  thorpej branches: 1.10.6; 1.10.8;
Add trailing ; to CFATTACH_DECL.
 1.9  30-Sep-2002  thorpej Use CFATTACH_DECL().
 1.8  27-Sep-2002  thorpej Declare all cfattach structures const.
 1.7  07-Dec-2001  yamt add detach support for st.
 1.6  15-Nov-2001  lukem don't need <sys/types.h> when including <sys/param.h>
 1.5  13-Nov-2001  lukem add RCSIDs
 1.4  18-Jul-2001  thorpej bcopy -> memcpy
 1.3  18-Jul-2001  thorpej bzero -> memset
 1.2  18-Jun-2001  bouyer branches: 1.2.2; 1.2.4;
Snapshot of ATAPI tapes support. Known to be able to read/write to tape with:
st0 at atapibus0 drive 1: <Seagate STT8000A, , 5.51> type 1 sequential
removable
Major changes may still happen in order to properly support other ATAPI
tape drives.
 1.1  04-May-2001  bouyer Add an ATAPI front-end to the st driver. Completely untested for now,
but st at scsi should still work :)
 1.2.4.3  10-Oct-2002  jdolecek sync kqueue with -current; this includes merge of gehenna-devsw branch,
merge of i386 MP branch, and part of autoconf rototil work
 1.2.4.2  10-Jan-2002  thorpej Sync kqueue branch with -current.
 1.2.4.1  03-Aug-2001  lukem update to -current
 1.2.2.6  18-Oct-2002  nathanw Catch up to -current.
 1.2.2.5  08-Jan-2002  nathanw Catch up to -current.
 1.2.2.4  14-Nov-2001  nathanw Catch up to -current.
 1.2.2.3  24-Aug-2001  nathanw Catch up with -current.
 1.2.2.2  21-Jun-2001  nathanw Catch up to -current.
 1.2.2.1  18-Jun-2001  nathanw file st_scsi.c was added on branch nathanw_sa on 2001-06-21 20:06:07 +0000
 1.10.8.1  11-Sep-2004  he Pull up revision 1.12 (via patch, requested by bouyer in ticket #837):
Improve handling of memory shortage, to fix problems like:
sd3(mpt0:0:1:0): unable to allocate scsipi_xfer
sd3: not queued, error 12
The theory is that other consumers of pool memory is causing
this memory shortage in certain somewhat hard to reproduce
situations.
This is done by giving scsipi_command an extra argument to
optionally pass a preallocated scsipi_xfer, and allocating a
scsipi_xfer before dequeueing a buffer in the various *start()
functions. If the allocation of a scsipi_xfer fails, schedule
a callout for delayed invocation of the start function. Also
reserve one page for scsipi_xfer structs, to ensure that we will
eventually have some available once pending commands complete.
Should fix PR#25670.
 1.10.6.6  10-Nov-2005  skrll Sync with HEAD. Here we go again...
 1.10.6.5  04-Mar-2005  skrll Sync with HEAD.

Hi Perry!
 1.10.6.4  02-Nov-2004  skrll Sync with HEAD.
 1.10.6.3  21-Sep-2004  skrll Fix the sync with head I botched.
 1.10.6.2  18-Sep-2004  skrll Sync with HEAD.
 1.10.6.1  25-Aug-2004  skrll Sync with HEAD.
 1.16.6.1  19-Mar-2005  yamt sync with head. xen and whitespace. xen part is not finished.
 1.16.4.1  29-Apr-2005  kent sync with -current
 1.22.2.2  30-Dec-2006  yamt sync with head.
 1.22.2.1  21-Jun-2006  yamt sync with head.
 1.23.12.1  31-Mar-2006  tron Merge 2006-03-31 NetBSD-current into the "peter-altq" branch.
 1.23.10.1  19-Apr-2006  elad sync with head.
 1.23.8.1  01-Apr-2006  yamt sync with head.
 1.23.6.1  22-Apr-2006  simonb Sync with head.
 1.23.4.1  09-Sep-2006  rpaulo sync with head
 1.24.10.2  10-Dec-2006  yamt sync with head.
 1.24.10.1  22-Oct-2006  yamt sync with head
 1.24.8.1  18-Nov-2006  ad Sync with head.
 1.26.52.4  11-Mar-2010  yamt sync with head
 1.26.52.3  19-Aug-2009  yamt sync with head.
 1.26.52.2  16-May-2009  yamt sync with head
 1.26.52.1  16-May-2008  yamt sync with head.
 1.26.50.1  18-May-2008  yamt sync with head.
 1.26.48.1  02-Jun-2008  mjf Sync with HEAD.
 1.27.14.1  13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.32.16.5  29-Apr-2012  mrg sync to latest -current.
 1.32.16.4  06-Mar-2012  mrg sync to -current
 1.32.16.3  06-Mar-2012  mrg sync to -current
 1.32.16.2  04-Mar-2012  mrg sync to latest -current.
 1.32.16.1  18-Feb-2012  mrg merge to -current.
 1.32.12.2  23-May-2012  yamt sync with head.
 1.32.12.1  17-Apr-2012  yamt sync with head
 1.33.2.2  23-Apr-2012  riz Pull up following revision(s) (requested by bouyer in ticket #192):
sys/dev/scsipi/cd.c: revision 1.307
sys/dev/scsipi/scsiconf.c: revision 1.266
sys/dev/scsipi/sd.c: revision 1.298
sys/dev/scsipi/st_scsi.c: revision 1.35
sys/dev/scsipi/atapiconf.c: revision 1.85
sys/dev/scsipi/scsipiconf.h: revision 1.120
sys/dev/usb/umass_scsipi.c: revision 1.44
sys/dev/scsipi/scsiconf.h: revision 1.57
sys/dev/scsipi/st_atapi.c: revision 1.29
sys/dev/scsipi/scsipi_base.c: revision 1.158
sys/dev/scsipi/st.c: revision 1.221
sys/dev/scsipi/scsipi_ioctl.c: revision 1.67
Expand struct scsipi_bustype {} in a ABI-backward-compatible way to
pass more informations about the bus:
- bustype_type has 2 different bytes, one holding the existing
SCSIPI_BUSTYPE_* (scsi, atapi, ata), and one for a per-SCSIPI_BUSTYPE_*
subtype. Introduce macros to build or extract bustype_type.
- for SCSIPI_BUSTYPE_SCSI, define subtypes for parallel SCSI, Fibre Channel,
SAS and USB, to specify the transport method. SCSIPI_BUSTYPE_SCSI_PSCSI
is 0 so that bustype_type value doesn't change for existing code
- for non-SCSIPI_BUSTYPE_SCSI busses there's no defined subtype yet,
so the bustype_type value doesn't change.
- provide scsi_fc_bustype, scsi_sas_bustype and scsi_usb_bustype
along with scsi_bustype to be used by bus driver where appropriate
- scsipi_print_xfer_mode(): more existing code under a
(SCSIPI_BUSTYPE_SCSI, SCSIPI_BUSTYPE_SCSI_PSCSI) case, as
sync/wide parameters only make sense for parallel SCSI.
For (SCSIPI_BUSTYPE_SCSI, SCSIPI_BUSTYPE_SCSI_FC) and
(SCSIPI_BUSTYPE_SCSI, SCSIPI_BUSTYPE_SCSI_SAS), only print
tagged queing status if enabled. Just be silent for other
bustypes.
This change is prompted by this problem:
right now, FC (e.g. isp(4)) and SAS (e.g. mfi(4)) don't
do anything for ADAPTER_REQ_SET_XFER_MODE, and especially never
call scsipi_async_event(ASYNC_EVENT_XFER_MODE), so sd(4) always
runs untagged. Doing a scsipi_async_event(ASYNC_EVENT_XFER_MODE) with
appropriate parameters is enough to enable tagged queuing,
but then scsipi will print:
sd0: async, 8-bit transfers, tagged queueing
which is harmless (async, 8-bit transfers doens't make sense on SAS anyway)
but will confuse users. With this change scsipi will only print:
sd0: tagged queueing
which is correct.
In the long run, knowning the underlying transport in scsipi will
allow better handling of device which are not parallel SCSI.
Another change adding an extra callback to struct scsipi_bustype {}
will come (so that scsipi_print_xfer_mode(), which is SCSI-specific,
can be moved out of scsipi_base, and split into per-subtype callback),
but this will break kernel ABI and so is not suitable for
netbsd-6, so will be commmited later. The above is enough to get
tagged queuing on FC and SAS in netbsd-6.
 1.33.2.1  02-Mar-2012  riz Pull up following revision(s) (requested by mbalmer in ticket #64):
sys/dev/scsipi/stvar.h: revision 1.24
sys/dev/scsipi/st_scsi.c: revision 1.34
sys/dev/scsipi/st_atapi.c: revision 1.28
sys/dev/scsipi/st.c: revision 1.220
Convert st(4) to device_t, while here clean up the code and use uintXX_t
instead of u_intXX_t.
 1.35.2.1  03-Dec-2017  jdolecek update from HEAD
 1.36.2.1  22-Sep-2015  skrll Sync with HEAD

RSS XML Feed