Home | History | Annotate | Download | only in scsipi
History log of /src/sys/dev/scsipi/scsiconf.c
RevisionDateAuthorComments
 1.306  22-Nov-2024  mlelstv The code tried to limit number of LUNs per target to 3, but would
only default to a single LUN when that limit is exceeded.

With the limit removed, more LUNs will be attached (up to the limit
imposed by the host adapter driver).
 1.305  29-Sep-2024  nat Add quirk for the standard PiSCSI cdrom emulation.
 1.304  22-Jun-2024  palle Add quirk for sparc64/sun4v ldom virtual cd devices
 1.303  15-Oct-2022  jmcneill Add PQUIRK_ONLYBIG for Oracle OCI BlockVolumes.

Oracle cloud BlockVolumes do not appear to support SCSI READ6 or WRITE6
commands, so set PQUIRK_ONLYBIG to avoid it here.
 1.302  14-Apr-2022  pgoyette 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
 1.301  09-Apr-2022  riastradh sys: Use membar_release/acquire around reference drop.

This just goes through my recent reference count membar audit and
changes membar_exit to membar_release and membar_enter to
membar_acquire -- this should make everything cheaper on most CPUs
without hurting correctness, because membar_acquire is generally
cheaper than membar_enter.
 1.300  12-Mar-2022  riastradh scsi(9): Handle bogus number of LUNs in SCSI_REPORT_LUNS.

Reported-by: syzbot+76ef9084533d4bccec66@syzkaller.appspotmail.com
 1.299  12-Mar-2022  riastradh sys: Membar audit around reference count releases.

If two threads are using an object that is freed when the reference
count goes to zero, we need to ensure that all memory operations
related to the object happen before freeing the object.

Using an atomic_dec_uint_nv(&refcnt) == 0 ensures that only one
thread takes responsibility for freeing, but it's not enough to
ensure that the other thread's memory operations happen before the
freeing.

Consider:

Thread A Thread B
obj->foo = 42; obj->baz = 73;
mumble(&obj->bar); grumble(&obj->quux);
/* membar_exit(); */ /* membar_exit(); */
atomic_dec -- not last atomic_dec -- last
/* membar_enter(); */
KASSERT(invariant(obj->foo,
obj->bar));
free_stuff(obj);

The memory barriers ensure that

obj->foo = 42;
mumble(&obj->bar);

in thread A happens before

KASSERT(invariant(obj->foo, obj->bar));
free_stuff(obj);

in thread B. Without them, this ordering is not guaranteed.

So in general it is necessary to do

membar_exit();
if (atomic_dec_uint_nv(&obj->refcnt) != 0)
return;
membar_enter();

to release a reference, for the `last one out hit the lights' style
of reference counting. (This is in contrast to the style where one
thread blocks new references and then waits under a lock for existing
ones to drain with a condvar -- no membar needed thanks to mutex(9).)

I searched for atomic_dec to find all these. Obviously we ought to
have a better abstraction for this because there's so much copypasta.
This is a stop-gap measure to fix actual bugs until we have that. It
would be nice if an abstraction could gracefully handle the different
styles of reference counting in use -- some years ago I drafted an
API for this, but making it cover everything got a little out of hand
(particularly with struct vnode::v_usecount) and I ended up setting
it aside to work on psref/localcount instead for better scalability.

I got bored of adding #ifdef __HAVE_ATOMIC_AS_MEMBAR everywhere, so I
only put it on things that look performance-critical on 5sec review.
We should really adopt membar_enter_preatomic/membar_exit_postatomic
or something (except they are applicable only to atomic r/m/w, not to
atomic_load/store_*, making the naming annoying) and get rid of all
the ifdefs.
 1.298  05-Feb-2022  hannken Initialize "replun" -- found with KMSAN.
 1.297  29-Jan-2022  martin In some cases the gcc optimizer is not smart enough to figure out why
the luns and nluns variables are never actually used when they are not
initialized - so initialize them always.
 1.296  28-Jan-2022  christos Factor out the lun detection code to simplify control flow.
 1.295  28-Jan-2022  jakllsch shut up GCC about possibly-uninit; some KNF
 1.294  27-Jan-2022  jakllsch Try REPORT LUNS command to enumerate logical units.
 1.293  21-Dec-2021  riastradh scsi(4): Take kernel lock around entry into autoconf.

This code paths is entered by kthreads marked MP-safe, not just from
autoconf.

I'm not sure this is sufficient -- it's not clear to me whether
anything prevents concurrently scanning the same target. Someone with
a better understanding of scsi(4) locking will have to audit this.

(For example, maybe it is guaranteed only to happen only either (a)
in autoconf, or (b) in a thread that doesn't start until autoconf is
done. But I don't know -- and if it is this, it should be asserted
so we can verify it.)
 1.292  07-Aug-2021  thorpej Merge thorpej-cfargs2.
 1.291  24-Apr-2021  thorpej branches: 1.291.8;
Merge thorpej-cfargs branch:

Simplify and make extensible the config_search() / config_found() /
config_attach() interfaces: rather than having different variants for
which arguments you want pass along, just have a single call that
takes a variadic list of tag-value arguments.

Adjust all call sites:
- Simplify wherever possible; don't pass along arguments that aren't
actually needed.
- Don't be explicit about what interface attribute is attaching if
the device only has one. (More simplification.)
- Add a config_probe() function to be used in indirect configuiration
situations, making is visibly easier to see when indirect config is
in play, and allowing for future change in semantics. (As of now,
this is just a wrapper around config_match(), but that is an
implementation detail.)

Remove unnecessary or redundant interface attributes where they're not
needed.

There are currently 5 "cfargs" defined:
- CFARG_SUBMATCH (submatch function for direct config)
- CFARG_SEARCH (search function for indirect config)
- CFARG_IATTR (interface attribte)
- CFARG_LOCATORS (locators array)
- CFARG_DEVHANDLE (devhandle_t - wraps OFW, ACPI, etc. handles)

...and a sentinel value CFARG_EOL.

Add some extra sanity checking to ensure that interface attributes
aren't ambiguous.

Use CFARG_DEVHANDLE in MI FDT, OFW, and ACPI code, and macppc and shark
ports to associate those device handles with device_t instance. This
will trickle trough to more places over time (need back-end for pre-OFW
Sun OBP; any others?).
 1.290  18-Sep-2020  jakllsch branches: 1.290.4;
Revert scsiconf.c 1.288, it only worked for LUN 1.

vioscsi(4) now sets PQUIRK_FORCELUNS, which fixes the original issue for
all LUNs.

To-do: should issue REPORT LUNS and use the information it returns to
probe LUNs in an optimized way.
 1.289  17-Sep-2020  jakllsch Some misspelling-in-comments fixes for scsipi
 1.288  11-Jul-2020  kim Continue scanning a SCSI bus when a LUN is reported not present

This fixes disk attachment under Qemu when there is no disk on LUN 0 on
a SCSI bus but there is a disk on LUN 1. The inquiry for LUN 0 returns
SID_QUAL_LU_NOTPRESENT & T_NODEVICE. Quirks are only checked if neither
one of those are set, so cannot use a quirk entry.

Use case 1: Proxmox 6 configures each disk on its own bus when using
the "Virtio SCSI single" SCSI controller. However, while the "scsi0"
disk is on LUN 0, the "scsi1" disk is on LUN 1.

Use case 2: A Linode boot profile with multiple disks results in
the first disk ("sda") on LUN 1, while the second disk ("sdb") is
on LUN 0, each on their own bus.
 1.287  02-May-2020  jdc Don't attempt to read opcodes and their timeouts at attach time for
old devices. The MAINTENANCE IN command was introduced with SCSI-3
and sending it to older peripherals can cause timeouts or them not
to respond to further requests.
 1.286  19-Feb-2020  riastradh C99 initializers for scsipi_bustype. No functional change intended.
 1.285  10-Nov-2019  chs branches: 1.285.2;
in many device attach paths, allocate memory with M_WAITOK instead of M_NOWAIT
and remove code to handle failures that can no longer happen.
 1.284  28-Mar-2019  kardel branches: 1.284.4;
Add reading of supported opcodes and their timeouts
at attachment time. Though this information is optional,
it allows to override our fixed timeouts with device
provided timeouts. These timeouts will override the
hardcoded values if the device provided timeouts
exceed the hardcoded values and are less than a day.

Using the device provided timeouts avoids premature
device resets and unreliable operation due to
inadequate timeouts.

Due to the limited implementations of USB
umass devices this feature is disabled for all
umass attached devices.
 1.283  12-Jan-2019  tsutsui Add NOLUNS quirk for more SEAGATE SCA/WIDE drives.

Tested on NetBSD/luna68k and LUNA with SCA 80pin -> NARROW 50pin and
WIDE 68pin -> NARROW 50pin connectors.
 1.282  07-Oct-2018  christos Handle the SATA to USB external enclosure sold by "Sabrent" and
made by JMicro (vendor=0x152d product=0x0578). This bridge does
not understand FUA, so add a quirk for it.
 1.281  01-Sep-2018  mlelstv Wait in detach if the discovery thread is still running. Avoids crashes
when a device is attached/detached rapidly.
 1.280  17-Jun-2017  mlelstv branches: 1.280.4; 1.280.6;
The atapibus detach path did hold the channel mutex while calling into autoconf,
which would trigger a panic when unplugging a USB ATAPI CDROM.

Align detach code for scsibus and atapibus to fix this.

Also avoid races when detaching devices by replacing callout_stop with
callout_halt.
 1.279  18-Mar-2017  tsutsui branches: 1.279.6;
Add NOLUNS quirk for SEAGATE ST39236LC disk drives.

Found on "SCSI drive conservation activity" for poor Tier-II machines.
 1.278  01-Dec-2016  mlelstv branches: 1.278.2;
CID 1396620: Null pointer dereferences
 1.277  29-Nov-2016  mlelstv reference count adapter mutex possibly shared by multiple channels.

fix error in atapibusdetach, when a child device cannot be detached,
keep atapibus instance alive.
 1.276  20-Nov-2016  mlelstv Make scsipi framework MPSAFE.

Data structures are now protected by a per-adapter mutex at IPL_BIO
that is created by the scsibus or atapibus instance when the adapter
is configured.
The enable reference counter and the channel freeze counter which are
currently used by HBA code before the adapter is configured, are made
atomic.
The target drivers are now all tagged as D_MPSAFE.

Almost all HBA drivers still require the kernel lock to present,
so all callbacks into HBA code are still protected by kernel lock
unless the driver is tagged as SCSIPI_ADAPT_MPSAFE.

TODO: refactor sd and cd to use dksubr.
 1.275  26-Jun-2016  mlelstv branches: 1.275.2;
Create a dedicated thread for the initial scsibus discovery instead
of using the completion thread. This prevents a deadlock when a
command fails during discovery which needs to be handled by the
completion thread.
 1.274  02-May-2016  christos move scsipi_strvis -> libkern:strnvisx()
change the prototype to match userland
fix sizes of strings passed to it
 1.273  25-Jul-2014  dholland branches: 1.273.4;
Add d_discard to all struct cdevsw instances I could find.

All have been set to "nodiscard"; some should get a real implementation.
 1.272  16-Mar-2014  dholland branches: 1.272.2;
Change (mostly mechanically) every cdevsw/bdevsw I can find to use
designated initializers.

I have not built every extant kernel so I have probably broken at
least one build; however I've also found and fixed some wrong
cdevsw/bdevsw entries so even if so I think we come out ahead.
 1.271  12-Oct-2013  christos Pass the device name in, so we can debug what deferred drivers did not work.
 1.270  15-Sep-2013  martin Remove unused variable
 1.269  21-Aug-2012  bouyer branches: 1.269.2; 1.269.4;
If the controller supports more than 256 commands per target,
clamp it to 256 (maximum number of tags in SCSI). Newer controllers
(such as mpii(4), and mfi(4) when fixed to announce tagged queuing support)
support more than 256 outstanding commands and don't use the scsi tag,
but at this time scsipi will always allocate a tag, and panic if a periph
tries to send more than 256 commands.
 1.268  13-May-2012  jakllsch Fix locking issue triggered by drvctr -r of a scsibus(4).
Pullup to netbsd-6 should be requested.
 1.267  20-Apr-2012  bouyer Add a bustype_async_event_xfer_mode() callback to scsipi_bustype (which can
be NULL), so that transport-specific details of transfer mode setting/printing
can be handled more easily.
Move scsipi_async_event_xfer_mode() and scsipi_print_xfer_mode() to
scsi_base.c and split in parallel scsi and FC/SAS parts.
size of struct scsipi_bustype has changed, welcome to 6.99.5
 1.266  19-Apr-2012  bouyer 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.265  06-Apr-2012  christos Add a quirk for the Apple iPod whose mode sense commands fails with not ready.
Seems to work just fine if we send a start command first...
 1.264  12-Mar-2012  mrg take the kernel lock a few more places when doing detach, to avoid
triggering KERNEL_LOCK_P() asserts in both scsi and usb code.

with this and other recent fixes i can now "drvctl -d ehci0".
 1.263  11-Mar-2012  mrg scsidevdetached ioctl path enters scsipi code without kernel lock
and this upsets the newer kasserts. take kernel lock here.
 1.262  26-Apr-2011  hannken branches: 1.262.4; 1.262.8; 1.262.10;
Fixup previous.

The bug was in scsibusdetach(), which is not doing things in the proper
order: it has to detach its children and check for error. If no error,
then it can release the resources that the children were using.

From David Young via source-changes-d.
 1.261  25-Apr-2011  hannken Don't kill outstanding requests when detaching a scsibus on shutdown.
Both the controller and tyhe targets are still running.
 1.260  18-Apr-2011  rmind Replace few simple_lock and ltsleep/wakeup uses with mutex(9) and condvar(9).

Note to all: please replace old primitives in your code! Thanks.
 1.259  02-Apr-2011  macallan Add a quirks entry for Seagate SX173404LC drives, now they will work at higher
speeds than 8bit/async
While there, also disable sync for ZIP drives - at least some of them will
pretend to support sync and then act up.
 1.258  07-Jun-2010  pgoyette branches: 1.258.2;
Update scsiverbose module to use module_autoload() rather than module_load().
Load the module right before each attempt to use its features, and let the
module subsystem handle unloading.
 1.257  30-May-2010  pgoyette Extract SCSIVERBOSE into a kernel module. The module can be builtin
by defining 'options SCSIVERBOSE' in the kernel config file (no change
from current behavior), or it can be loaded at boot time on those
architectures that support the boot loader's "load" command.

The module is built for all architectures, whether or not SCSI or
atapi support exists.
 1.256  27-Apr-2010  dyoung For clarity of scsidevdetached(), rename some variables: sc ->
self, dev -> child, ssc -> sc.
 1.255  12-Nov-2009  dyoung branches: 1.255.2; 1.255.4;
Remove superfluous activation hooks.
 1.254  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.253  12-May-2009  cegger struct device * -> device_t, no functional changes intended.
 1.252  12-May-2009  cegger struct cfdata * -> cfdata_t, no functional changes intended.
 1.251  07-Apr-2009  dyoung Detach atapibus(4), scsibus(4), cd(4), and sd(4) during shutdown.
Destroy sd->sc_callout in sddetach(). Delete some dead code in
cddetach().
 1.250  16-Jul-2008  drochner branches: 1.250.2; 1.250.8;
split device/softc for scsibus
 1.249  03-Jul-2008  hannken branches: 1.249.2;
The Intel SCA backplane "ESG-SHV" does not support logical units.
 1.248  08-Jun-2008  tsutsui branches: 1.248.2;
Use device_lookup_private() rather than using cd_devs[] directly to get softc.

XXX maybe we should change a type of cd_devs[] in struct cfdriver
from (void *) to device_t.
 1.247  28-Apr-2008  martin branches: 1.247.2;
Remove clause 3 and 4 from TNF licenses
 1.246  05-Apr-2008  cegger branches: 1.246.2; 1.246.4;
use aprint_*_dev and device_xname
 1.245  04-Jan-2008  ad branches: 1.245.6;
Start detangling lock.h from intr.h. This is likely to cause short term
breakage, but the mess of dependencies has been regularly breaking the
build recently anyhow.
 1.244  09-Dec-2007  jmcneill branches: 1.244.2;
Merge jmcneill-pm branch.
 1.243  04-Mar-2007  christos branches: 1.243.14; 1.243.16; 1.243.22; 1.243.24; 1.243.26;
Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
 1.242  17-Feb-2007  bouyer The SEAGATE ST318203LSUN18G announces DT only capabilitie although it also
supports ST. Because of this the HBA doesn't initiate sync/wide negotiation,
so add PQUIRK_CAP_SYNC | PQUIRK_CAP_WIDE16 for this drive; fix
problem reported by Havard Eidnes.
 1.241  30-Nov-2006  christos branches: 1.241.2; 1.241.4;
Add a quirk for Initio drives (from Rhialto)
 1.240  16-Nov-2006  christos __unused removal on arguments; approved by core.
 1.239  12-Oct-2006  christos - sprinkle __unused on function decls.
- fix a couple of unused bugs
- no more -Wno-unused for i386
 1.238  03-Sep-2006  christos branches: 1.238.2; 1.238.4;
add missing initializer
 1.237  29-Aug-2006  bjh21 The Fujitsu drive in my A540 supports sync transfers but apparently
doesn't advertise this in INQUIRY. It makes it nice and obvious with
SDTR, though, so add it to the list.
 1.236  30-Mar-2006  thorpej Use device_private().
 1.235  29-Mar-2006  thorpej Replace device_locators() with device_locator(), and use it.
 1.234  11-Dec-2005  christos branches: 1.234.4; 1.234.6; 1.234.8; 1.234.10; 1.234.12;
merge ktrace-lwp.
 1.233  26-Nov-2005  tsutsui Fix typo (FALLTHOUGH -> FALLTHROUGH). From Jeff Ito.
 1.232  25-Aug-2005  drochner branches: 1.232.6;
kill a number of autoconf submatch functions which follow the
standard scheme:
if (<configured> != <wildcard> && <configured> != <real>)
then fail
else
ask device match function

This is handled by config_stdsubmatch() now.
 1.231  25-Aug-2005  drochner replace the "locdesc_t" structure carrying the number of locators
explicitely by a plain integer array
the length in now known to all relevant parties, so this avoids
duplication of information, and we can allocate that thing in
drivers without hacks
 1.230  30-May-2005  christos branches: 1.230.2;
- remove bogus casts
- add more const
 1.229  27-Feb-2005  perry branches: 1.229.2;
nuke trailing whitespace
 1.228  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.227  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.226  21-Aug-2004  thorpej branches: 1.226.4; 1.226.6;
Use ANSI function decls and make use of static.
 1.225  18-Aug-2004  drochner Use the new autoconf functions to rescan busses and detach devices
on user request.
This duplicates the functionality provided by a private ioctl
interface (accessible through scsictl(8)), but in a more generic way.
 1.224  12-Aug-2004  mycroft Whoops. Swap the order of the delref() and the config_pending_decr().
 1.223  10-Aug-2004  mycroft Hold a reference to the adapter until scsibus_config() has been called. This
avoids an extra enable/disable cycle on removable controllers (i.e. PCMCIA).
 1.222  06-Aug-2004  bouyer Ops, don't return before the end of the function.
Catched by enami tsugutomo.
 1.221  05-Aug-2004  bouyer scsi_kill_pending(): don't kill the commands in periph_xferq here.
The controller is handling them, calling scsipi_done() here will end up in the
xfer being scsipi_done()'ed a second time when it completes in the controller
code. In addition, the way the loop was done here would end up in an infinite
loop, because the channel kernel thread needs to run to remove a command from
this queue.

scsibusdetach(): scsipi_done() all commands from periph_xferq. The controller
is already gone, and these commands will never complete.
Shut down the channel (which will cause the kenrel thread to exit) after
detaching the childs, as they will need the kernel thread for
scsipi_wait_drain().

Fix kernel hang or deadlock when detaching devices (either by scsictl detach
or unplug) with active commands.
 1.220  12-Mar-2004  bouyer branches: 1.220.4;
Add a drive with broken tagged queuing support. From Jim Faulkner.
Fix PR kern/23815.
 1.219  22-Feb-2004  mycroft Remove PQUIRK_CDROM. It is definitely not correct -- witness that no other
OS needs such a hack, and the same drive works fine on Suns -- and is much
more likely to be a bug in the host adapter driver (which is corroborated by
the PQUIRK_NOLUNS).
 1.218  10-Oct-2003  matt Remove a quirk I added for a Hitachi drive.
 1.217  18-Sep-2003  mycroft Don't print junk if an INQUIRY fails (usually with an ILLEGAL REQUEST due to
an unused LUN). Also, if the qualifier says the LUN is non-existant, don't
try to attach a device here.
 1.216  12-Sep-2003  mycroft Some devices really want INQUIRY to be the first command they receive. Also,
the result of the extra TEST UNIT READY was being ignored anyway. So, I wrote
it, I nuke it.
 1.215  10-Sep-2003  mycroft Set up the blank fields in the INQUIRY buffer *before* executing the command --
because we can't really rely on the "additional length" being correct (any
more?). Fixes some problems with devices showing up as "<, , >".
 1.214  09-Sep-2003  mycroft Remove NOMODESENSE quirks for Iomega drives -- they're totally unneeded.
 1.213  09-Sep-2003  mycroft Delete the NOMODESENSE quirks for Maxtor USB hard drives, as these are no
doubt resolved (and were never actually needed in the first place -- someone
was let out without supervision).
 1.212  09-Sep-2003  mycroft Exorcise PQUIRK_NODOORLOCK.
 1.211  08-Sep-2003  mycroft There is absolutely no sense in having a PQUIRK_NODOORLOCK entry for a
non-removable device. Nuke it.
 1.210  08-Sep-2003  mycroft If maxlun>0, automatically set PQUIRK_FORCELUNS, rather than using quirk
table entries.
 1.209  08-Sep-2003  mycroft Do a START UNIT only if the TEST UNIT READY reports that the device is not
ready. This avoids gratuitously starting the motor on floppy and CD-ROM
drives, and eliminates the need for the audio playing test in cdopen().

Therefore, also remove PQUIRK_NOSTARTUNIT.
 1.208  07-Aug-2003  jrf Added three scsi IDs which were tested by Dave Barnes who sent in
three PRs regarding them: 17836, 17837, 17838. Did a few kernel
compiles with them just to make sure they are okay. Approved by
christos@, thanks to Dave for sending the PRs and verifying to me
that they work.
 1.207  29-Jun-2003  fvdl branches: 1.207.2;
Back out the lwp/ktrace changes. They contained a lot of colateral damage,
and need to be examined and discussed more.
 1.206  28-Jun-2003  darrenr Pass lwp pointers throughtout the kernel, as required, so that the lwpid can
be inserted into ktrace records. The general change has been to replace
"struct proc *" with "struct lwp *" in various function prototypes, pass
the lwp through and use l_proc to get the process pointer when needed.

Bump the kernel rev up to 1.6V
 1.205  13-May-2003  thorpej Use aprint*().
 1.204  02-May-2003  fvdl Local change I had lying around: add NOLUNS quirk for an older seagate
drive.
 1.203  21-Apr-2003  fvdl Add another IBM drive that incorrectly reports DT only.
 1.202  19-Apr-2003  fvdl Add a PCAP_NODT quirk. I have two older Quantum Atlas drives that work
fine at U2W, but barf at U160, with different controllers. Unfortunately
sometimes just being initialized at U160 does the trick, so setting them
to lower speed in the BIOS may also be needed.
 1.201  14-Mar-2003  bouyer Move the SCSI_DELAY before the serialization for probe. multiple SCSI busses
can sleep, only probes have to be keept ordered.
 1.200  10-Feb-2003  pk Remove NOTAG quirk for the Seagate ST11200N; the cause of the failure that
prompted this entry was actually a driver bug.
 1.199  01-Feb-2003  bouyer Add PQUIRK_NOLUNS entry for "NEC ", "CD-ROM DRIVE:502".
Fixes PR kern/18479
 1.198  27-Jan-2003  bouyer Remove revision in quirk entry for TOSHIBA XM-4101TASUNSLCD. The same drive with a newer revision also fails, so assume all revisions are bad until proven otherwise. Should fix PR kern/19912.
 1.197  09-Jan-2003  pk Add two disks capable of doing synchronous transfer mode, but don't
report SCSI2: "MICROP 1924" and "FUJITSU M2266"
 1.196  01-Jan-2003  thorpej Use aprint_normal() in cfprint routines.
 1.195  05-Dec-2002  jdolecek Add NOLUNS|NOSYNC quirk for NEC CD-ROM DRIVE:222.
Change sent in PR kern/19286 by Dave Barnes.
 1.194  23-Oct-2002  jdolecek merge kqueue branch into -current

kqueue provides a stateful and efficient event notification framework
currently supported events include socket, file, directory, fifo,
pipe, tty and device changes, and monitoring of processes and signals

kqueue is supported by all writable filesystems in NetBSD tree
(with exception of Coda) and all device drivers supporting poll(2)

based on work done by Jonathan Lemon for FreeBSD
initial NetBSD port done by Luke Mewburn and Jason Thorpe
 1.193  04-Oct-2002  soren Slightly simplicy the SCSI device attachment message:
- Use the plain words 'disk' and 'tape' instead of 'direct' and 'sequential'.
- Media status will be printed in the frontend, so don't bother with it.
- Don't bother printing the SCSI version, which is fixed these days, or the
numberic device type.
 1.192  02-Oct-2002  thorpej Add trailing ; to CFATTACH_DECL.
 1.191  30-Sep-2002  thorpej Use CFATTACH_DECL().
 1.190  27-Sep-2002  thorpej Declare all cfattach structures const.
 1.189  27-Sep-2002  thorpej Introduce a new routine, config_match(), which invokes the
cfattach->ca_match function in behalf of the caller. Use it
rather than invoking cfattach->ca_match directly.
 1.188  19-Sep-2002  jmc Force the initial probes to happen within the newly forked off kthread.
This eliminates problems where the underlying interrupt handler isn't the
specific layer calling scsipi_complete() for a given scsi transaction.
This avoids deadlocks where the kthread that called the autoconf routines
to configure a scsibus shouldn't be the one put to sleep waiting on a
scsipi_complete (only the scsibus's kthread should be doing that).

To avoid jitter this will force the scsibus's to probe in the order they
run through autoconf (so machines with multiple bus's don't move sd* devices
around on every reboot).
 1.187  06-Sep-2002  gehenna Merge the gehenna-devsw branch into the trunk.

This merge changes the device switch tables from static array to
dynamically generated by config(8).

- All device switches is defined as a constant structure in device drivers.

- The new grammer ``device-major'' is introduced to ``files''.

device-major <prefix> char <num> [block <num>] [<rules>]

- All device major numbers must be listed up in port dependent majors.<arch>
by using this grammer.

- Added the new naming convention.
The name of the device switch must be <prefix>_[bc]devsw for auto-generation
of device switch tables.

- The backward compatibility of loading block/character device
switch by LKM framework is broken. This is necessary to convert
from block/character device major to device name in runtime and vice versa.

- The restriction to assign device major by LKM is completely removed.
We don't need to reserve LKM entries for dynamic loading of device switch.

- In compile time, device major numbers list is packed into the kernel and
the LKM framework will refer it to assign device major number dynamically.
 1.186  02-Aug-2002  bouyer Add yet another broken sony cdrom. This one, in addition to broken LUN
handling, has broken sync negotiation. Also add PQUIRK_NOWIDE to be safe.
Fix PR kern/17773.
 1.185  23-Jul-2002  matt Add a quirk for a HITACHI driver (CAP_SYNC|CAP_WIDE16).
 1.184  15-May-2002  bouyer branches: 1.184.2; 1.184.4;
Change PQUIRK_CAP_SYNC to set PERIPH_CAP_SYNC aslo for devices that
improperly claim to only support DT clocking.
Add a PQUIRK_CAP_WIDE16 quirk.
Add a quirk for IBM DXHS36D SCSI disk (claims to only support DT).
 1.183  05-May-2002  thorpej A statement must follow a label.
 1.182  23-Apr-2002  bouyer The IBM drive I have here supports DT, but claim version 3 only.
So check for version 3, not 4 when looking for DT support.
This should be safe as these bits are reserved for older devices, they
should be set to 0 when not supported.
 1.181  23-Apr-2002  bouyer Report SPC-2 features (DT clocking, quick arbitration and selection,
information unit transfers) though periph_cap.
 1.180  15-Apr-2002  joda Maxtor D040H2 also can't modesense
 1.179  01-Apr-2002  bouyer Add a chan_name to struct scsipi_channel, holding the channel's name.
Set this to dv_xname for scsibus and atapibus.
Set the name of the kernel thread to chan_name instead of controller's
name:channel number (so that we can use this name for controller-specific
threads).
 1.178  16-Mar-2002  chs add a quirk for some disks I have that don't like tagged queuing.
 1.177  23-Jan-2002  uwe Add notag quirk for Seagate "ST11200N SUN1.05".
 1.176  29-Dec-2001  augustss Move some USB device quirks to the umass_quirk table.
 1.175  29-Dec-2001  augustss Remove some quirk entries that are handled in umass_quirk now.
 1.174  27-Dec-2001  nathanw Use PQUIRK_ONLYBIG for all Olympus cameras, not just the C-1.
Use PQUIRK_ONLYBIG for the PQI TravelFlash.
 1.173  14-Dec-2001  nathanw The Olympus C-1 engine cameras seem to need the PQIRK_ONLYBIG quirk.
 1.172  02-Dec-2001  bouyer Clean up attach of wd/atapibus:
kill ata_atapi_attach. Change atapibus to use a struct scsipi_channel instead
of ata_atapi_attach as attach arch. Create a ata_device, compatible with
scsipi_channel, to attach wd.
 1.171  26-Nov-2001  fredette Added quirk entries for Adaptec and Emulex SCSI interposer boards.
Decode a limited set of SASI/SCSI-1 sense codes, and under sun2
only, conjure up INQUIRY responses for these boards.
 1.170  19-Nov-2001  tsutsui Add a new quirk value PQUIRK_CAP_SYNC for SCSI1 devices which support
sync transfers, and set PERIPH_CAP_SYNC for them in scsi_probe_device().
As per discussion on tech-kern.
 1.169  19-Nov-2001  soren Floptical drive needs PQUIRK_NODOORLOCK as well.
 1.168  19-Nov-2001  soren Insite Floptical drive needs PQUIRK_NOLUNS.
 1.167  18-Nov-2001  tsutsui Fix formatting of scsi_quirk_patterns[] and wrap long lines.
 1.166  15-Nov-2001  lukem don't need <sys/types.h> when including <sys/param.h>
 1.165  13-Nov-2001  lukem add RCSIDs
 1.164  06-Nov-2001  augustss Add a quirk for a USB CD/RW.
 1.163  21-Oct-2001  mjl branches: 1.163.2;
Add ST15150N to quirk table, as per PR/13817.
 1.162  16-Oct-2001  christos PR/14256: Kevin P. Neal: Add quirk for micropolis drive.
 1.161  31-Aug-2001  augustss branches: 1.161.2;
Add a new quirk, PQUIRK_NOBIGMODESENSE, for devices that need big
SCSI ops, but still fails on big mode sense.
Makes M-Sys DiskOnKey work.
 1.160  31-Aug-2001  augustss Some quirks for USB M-Sys DiskOnKey. Still not enough to make it work.
 1.159  18-Jul-2001  bouyer Adn scsipi_target_detach() and scsipi_thread_call_callback() as discussed
on tech-kern. scsipi_target_detach() accept wildcard target/lun as requested.
 1.158  11-Jun-2001  pk branches: 1.158.2;
Add nolun/nosync quirk for "IBM CDRM00201 !F"
See PR#13031.
 1.157  25-Apr-2001  bouyer Pull up the thorpej_scsipi branch to main branch.
This is a completely rewritten scsipi_xfer execution engine, and the
associated changes to HBA drivers. Overview of changes & features:
- All xfers are queued in the mid-layer, rather than doing so in an
ad-hoc fashion in individual adapter drivers.
- Adapter/channel resource management in the mid-layer, avoids even trying
to start running an xfer if the adapter/channel doesn't have the resources.
- Better communication between the mid-layer and the adapters.
- Asynchronous event notification mechanism from adapter to mid-layer and
peripherals.
- Better peripheral queue management: freeze/thaw, sorted requeueing during
recovery, etc.
- Clean separation of peripherals, adapters, and adapter channels (no more
scsipi_link).
- Kernel thread for each scsipi_channel makes error recovery much easier
(no more dealing with interrupt context when recovering from an error).
- Mid-layer support for tagged queueing: commands can have the tag type
set explicitly, tag IDs are allocated in the mid-layer (thus eliminating
the need to use buggy tag ID allocation schemes in many adapter drivers).
- support for QUEUE FULL and CHECK CONDITION status in mid-layer; the command
will be requeued, or a REQUEST SENSE will be sent as appropriate.

Just before the merge syssrc has been tagged with thorpej_scsipi_beforemerge
 1.156  26-Feb-2001  fvdl branches: 1.156.2;
Add quirks for VMware emulated disks, for NetBSD as a guest OS.
 1.155  16-Feb-2001  pk Turn off command tagging by default for pre-SCSI2 devices.
 1.154  18-Jan-2001  jdolecek constify
 1.153  03-Dec-2000  ad I2O HBAs provide an abstracted view of the bus; use SCBUSIOLLSCAN to give
them an oppertunity to re-scan it before we do.
 1.152  14-Nov-2000  pk Mark the "TOSHIBA, XM-4101TASUNSLCD" CD-R for a-sync operation only.
 1.151  22-Sep-2000  ad Add a new, optional method to scsipi_adapter (scsipi_accesschk()), and use
it when considering whether to attach devices. This is to facilitate
`non-SCSI' RAID controller drivers that want to provide SCSI pass-through
services to the kernel.
 1.150  13-Aug-2000  mjacob Add "SYMBIOS" processor type to the SDEV_NOLUN category. These are usually
the GEM chips on a Sun D1000- and they cause Qlogic SBus firmware to blow
chunks if you access past lun 0.
 1.149  08-Aug-2000  mjacob During probe, use SCBUSACCEL ioctl to adapters that support it to
enable fast/wide/tagged.
 1.148  03-Aug-2000  bouyer Add quirk entry for NEDICOM CRD-BP2, from kern/10738.
 1.147  09-Jun-2000  enami branches: 1.147.2;
Prevent a process being swapped out during I/O if the data buffer is
allocated on stack. This potential problem is noticed by Noriyuki Soda
and the idea and sample code to fix is given by Jason R. Thorpe.
 1.146  30-May-2000  augustss Add NOMODESENSE quirk for TEAC USB floppy.
 1.145  30-May-2000  augustss Add NOMODESENSE quirk for Y-E data floppy (thanks Jason for reminding me).
 1.144  29-May-2000  bouyer ADEV_CDROM -> SDEV_CDROM, for consistency.
 1.143  28-May-2000  gmcgarry Handle ADEV_CDROM in quirks table.
Quirk entry for another Toshiba cdrom.
 1.142  15-May-2000  dante branches: 1.142.2;
Add few peripheral device type
Remove "???" from T_IT8_1/2. They actually are pre-press devices for graphic arts as described by ASC IT8
Zeros and blanks scsipi_inquiry_data from byte 58 to byte 74 if additional_length is less than 58
 1.141  14-May-2000  dante Change scsipi_inquiry_data strucure to be ANSI SPC-2 rev16 compliant
 1.140  19-Apr-2000  enami Allocate the variable `inqbuf' in scsi_probedev on stack rather than
statically. Since this function may called for another luns immediately,
allocating it statically doesn't make sense and may cause race condition
as pointed out by PR#9749.
 1.139  02-Apr-2000  augustss Change the initial field in struct ata_atapi_attach and struct scsipi_link
slightly to allow scsibus and atapibus to attach to the same device.
Furthermore, only attach a scsibus when the bus type is BUS_SCSI.
 1.138  27-Mar-2000  augustss In attach message, spell it "target" not "targ", as in the locator.
 1.137  19-Mar-2000  sjg Added NOLUNS quirk for YAMAHA CRW8424S
 1.136  17-Mar-2000  soren scsiprint() is needed even without scsibus'es, so move it to scsi_base.c .
 1.135  13-Mar-2000  martin Added Artec/Ultima A6000C scanner to the quirks table (no LUNs).
 1.134  20-Jan-2000  mjacob Nobody said no to adding a pointer to original scsi inquiry data
to the scsibus attach args. Make sure it's nulled for ATAPI. Also,
for scsiconf.c, modify SENA's quirk entry.
 1.133  13-Jan-2000  nisimura Add tweaks for TEAC compact cassette tape drive.
 1.132  14-Nov-1999  soren Allow SCSI_DELAY to be shorter than 2 seconds.
 1.131  20-Oct-1999  enami Cancel active transfers on aic/wdc detach.
Also makes LS-120 drive works for me again.
 1.130  11-Oct-1999  hwr branches: 1.130.2; 1.130.4;
Add ad quirk for CDU-561 CD-ROM. From PR kern/8608
by SUNAGAWA Keiki <kei_sun@ba2.so-net.ne.jp>.
 1.129  10-Oct-1999  hwr Add a quirk to recognize a Toshiba XM-3401TA SCSI CD-ROM as
removable SCSI device. From Matthew Fredette <fredette@mit.edu> in
kern/7438.
 1.128  30-Sep-1999  thorpej branches: 1.128.2;
Cleanup the scsipi_xfer flags:
- `flags' is now gone, replaced with `xs_control' and `xs_status'.
- Massive cleanup of the control flags. Now we explicitly say that
a job is to complete asynchronously, rather than relying on side-effects,
and use a new flag to now that device discovery is being performed.
- Do SCSI device discovery interrupt-driven.
 1.127  19-Sep-1999  nathanw Add NOLUNS quirk for another Texel CD-ROM revision.
 1.126  11-Sep-1999  thorpej Implement detaching of SCSI busses.
 1.125  09-Sep-1999  hwr Add a quirk for Wangtec SCSI-36 (QIC-120) tape drive.
From Izumi Tsutsiu in PR 8357.
 1.124  26-Jul-1999  explorer make the JVC 2626 match more than one version, since all seem to be
returning errors on the LUN probe.
 1.123  14-Jul-1999  tron Skip LUN check for all versions of the UMAX Astra 1220S as suggested
by Dan McMahill in PR kern/7991.
 1.122  10-Dec-1998  mjacob branches: 1.122.2; 1.122.4;
add Adaptec RAID units as devices that do not return geometry pages
 1.121  08-Dec-1998  thorpej When allocating a device's scsipi_link, initialize the pending_xfers
queue.
 1.120  05-Dec-1998  mjacob NOMODESENSE for all Seagate ST19171- not just FC
 1.119  05-Dec-1998  mjacob Eliminate the moreluns entry as it makes no sense for fat SCSI busses (e.g,
FC loops). Change the semantics of scsi_probedev so that it returns 1 if
you should continue probing at this target, else 0 for not.

Replace the blanket use of '7' with the use of the new sc_maxlun property
that is now gathered from HBAs. Allocate scsipi_link arrays based upon this.
Fix a really nasty and silly bug that has been there for a while where the
number of first level scsipi_link structures was one less than it needed
to be.
 1.118  26-Nov-1998  leo The IOMEGA ZIP 100, J.03 does not grok LUN's.
 1.117  19-Nov-1998  thorpej Add a reference to the adapter when the scsibus is opened, and delete it
when it is closed.
 1.116  19-Nov-1998  thorpej Add a reference to the adapter before probing the bus, and delete it
once we are done probing.
 1.115  17-Nov-1998  bouyer Rename scsi_interpret_sense() to scsipi_interpret_sense() and move it from
scsi_base.c to scsipi_base.c. Rename the functions from scsi_verbose.c
too, and rename the file itself. Cleaup includes too (scsi_*.h should not
be #included in scsipi_*.h files, which are supposed to be
common to atapi and scsi).
 1.114  20-Oct-1998  thorpej Fix a sight open flags buglet pointed out by Matthias Scheler.
 1.113  10-Oct-1998  thorpej Enforce open-for-writing on ioctls that change the bus's state.

Implement ioctl pass-through to the host bus adapter, allowing both
SCBUS* ioctls handled at that level and host adapter-specific ioctls
to be implemented. Implement SCBUSIORESET as a pass-through.

Inspired by PR #6090, from Matt Jacob.
 1.112  10-Oct-1998  thorpej Implement the SCBUSIOSCAN ioctl. Rescans the bus for new devices.
 1.111  10-Oct-1998  thorpej Add the open/close/ioctl entry points for the SCSI bus, i.e. /dev/scsibusN.
 1.110  08-Oct-1998  thorpej Add a NOSYNCCACHE quirk for the Micropolis 2217-15MQ1091501, as reported
by Matt Jacob, PR #6027.
 1.109  08-Oct-1998  thorpej Add a NOLUNS quirk for the Sony CDL1100 changer, from Chris Jones, PR #6238.
 1.108  08-Sep-1998  mjacob Reflect changes in quirk flags, and also now add case post retrieval
of Inquiry data during probe where SDEV_NOSYNC, SDEV_NOTAG and SDEV_NOWIDE
can be set (with quirk data overriding) per device probed.
 1.107  31-Aug-1998  cgd kill the last remnants of __BROKEN_INDIRECT_CONFIG. (only the pica port
used it, and it's non-working and apparently slated for replacement.)
 1.106  17-Aug-1998  mycroft Assign my copyrights to TNF.
 1.105  15-Aug-1998  mycroft Make copyright notices with my name consistent.
 1.104  05-Aug-1998  drochner Improve generation of default disklabels:
-store printable product ID in cd's and sd's softc, use it as "typename"
-for this, add a "destination buffer length" argument to scsipi_strvis()
-return ATAPI device type for ATAPI devices
 1.103  31-Jul-1998  thorpej Use the pool allocator for scsipi_xfer structures.
 1.102  30-Jul-1998  fvdl branches: 1.102.2;
Add NOLUNS quirk for the UMAX Astra 1220 scanner.
 1.101  22-Jun-1998  bouyer Ricoh IS60 to the quirk table (SDEV_NOLUN). Fixes PR 5473 by
Feico Dillema < dillema@acm.org>
 1.100  04-May-1998  thorpej The DEC RRD42 doesn't deal with LUNs very well either.
kern/5376, Simon Burge <simonb@telstra.com.au>
 1.99  04-May-1998  thorpej Add the UMAX Astra 1200S scanner to the list of the LUN-clueless.
kern/5390, Rene Hexel <rh@vip.at>
 1.98  23-Apr-1998  explorer Ignore LUN on yet another cdrom
 1.97  10-Apr-1998  mjacob trim ID of ST19171FC so that SUN drives are caught
 1.96  07-Mar-1998  scottr Quirk table entries for IBM H3171 and Quantum ELS85S disks.
 1.95  21-Jan-1998  mikel add NOLUNS quirk for UMAX S-12; from Andreas Wrede in PR kern/4849
 1.94  12-Jan-1998  thorpej Adjust for changes to config.
 1.93  03-Oct-1997  thorpej branches: 1.93.2;
Clean up and comment the device types, and add the "enclosure services",
"storage array", and "IT8" types.
 1.92  01-Oct-1997  enami Cosmetic changes to keep coding style consistency in this directory;

- Indent with tab of width 8.
- Use four column to indent continuation line.
- Fold long line if possible.
- Use return (xx) instead of return xx.
- Compare pointer against NULL instead of testing like boolean.
- Delete whitespace at the end of line.
- Delete whitespace in front of function call operator.
- Delete whitespace after cast.
- Dereference a pointer to function explicitly.
- Add an empty line after local variable declaration.
- Use NULL instead of (char *)0.
- Dont use block for single statement.
 1.91  29-Sep-1997  bouyer Add quirks entries for Hitachi DK515C disk drives and Cipher ST150S tape drive.
Closes PR kern/4171 from jbernard@tater.mines.edu.
 1.90  19-Sep-1997  mjacob Another couple NOMODESENSE drives.
 1.89  09-Sep-1997  pk Add SDEV_NOLUNS to another CD-ROM player.
 1.88  27-Aug-1997  bouyer branches: 1.88.2;
Merge scsipi branch in the mainline. This add support for ATAPI devices
(currently only CD-ROM drives on i386). The sys/dev/scsipi system provides 2
busses to which devices can attach (scsibus and atapibus). This needed to
change some include files and structure names in the low level scsi drivers.
 1.87  17-Aug-1997  mjacob A few more SDEV_NOLUNS entries- one tape drive (SONY Beta/VHS) and a couple
of PCMCIA card readers (one as T_DIRECT, the other as T_PROCESSOR).
 1.86  16-Aug-1997  mjacob This fibre channel disk doesn't support the geometry page.
 1.85  14-Aug-1997  explorer add SDEV_NOLUNS for my scanner (UMAX S-6E)
 1.84  17-Jul-1997  perry branches: 1.84.2;
More CD quirks, from Dave Huang (pr-3843)
 1.83  24-Apr-1997  mycroft Another silly CD-ROM drive...
 1.82  20-Apr-1997  thorpej And Yet Another Broken IBM disk (the 664 this time), once again
reported by Hubert Feyrer <feyrer@grizu.fh-regensburg.de>.
 1.81  20-Apr-1997  thorpej Add Yet Another Broken IBM disk to the SDEV_AUTOSAVE list. This one
doesn't report a vendor string (yuck)!. Problem reported by
Hubert Feyrer <feyrer@grizu.fh-regensburg.de>.
 1.80  19-Apr-1997  pk Two more quirks:
Python 28454-XXX tape drive: NOLUNS
1588-15MBSUN0669 disk: AUTOSAVE
 1.79  08-Apr-1997  scottr Add another IBM disk that needs SDEV_AUTOSAVE.
 1.78  02-Apr-1997  mycroft Add a SDEV_AUTOSAVE quirk for the Emulex SCSI<->ESDI bridge.
 1.77  01-Apr-1997  mikel loosen the version number check in the quirk list for the CDR-H98MV;
from Koji Imada in PR kern/3419.
 1.76  27-Mar-1997  scottr Add SDEV_AUTOSAVE quirks for IBM 0663H{08,12} disks
 1.75  25-Mar-1997  scottr Add SDEV_NOLUNS quirk for Seagate ST125N.
 1.74  11-Mar-1997  mikel SDEV_NOMODESENSE quirks are no longer needed for optical devices; from
Enami Tsugutomo in PR kern/3308.
 1.73  14-Dec-1996  mycroft branches: 1.73.6;
Make sure to initialize the memory we just allocated.
 1.72  10-Dec-1996  thorpej Add a "max_target" member to struct scsi_link, which is filled in by
host adapter drivers, indicating the highest SCSI target they can
address. Use this value to dynamically allocate data structures, rather
than hard-coding 8 targets.

These changes allow targets > 7 to be addressed on wide SCSI busses.

Fixes PRs #1674 and #2892.
 1.71  05-Dec-1996  cgd update these so they compile whether or not __BROKEN_INDIRECT_CONFIG
is defined.
 1.70  29-Nov-1996  thorpej Add Yet Another Broken CD-ROM Drive to The List.
From Lennart Augustsson <augustss@cs.chalmers.se>, PR #2971.
 1.69  08-Nov-1996  explorer Another quirky cdrom drive ; pr kern/2917
 1.68  06-Nov-1996  mikel Add another broken CDROM. Fixes PR kern/2913.
Some misc. cleanup.
 1.67  23-Oct-1996  matthias * At least the Teac FC-1 Shugart-SCSI bridgeboard does motor on/off
management by itself. But when it gets a start unit request, it keeps
the floppy motor running all the time. This adds code for dealing with
yet another quirk (SDEV_NOSTARTUNIT) that prevents sd.c from sending
start unit requests. A entry for the Teac FC-1 is added to the quirk
table.
 1.66  18-Oct-1996  explorer Add quirk entries for two more optical drives; closes pr kern/2861
 1.65  12-Oct-1996  christos revert previous kprintf change
 1.64  10-Oct-1996  christos printf -> kprintf, sprintf -> ksprintf
 1.63  03-Sep-1996  thorpej Store the SCSI version in the scsi_link, and set the LUN in the CDB
if the version is <= SCSI-2. This should help some older SCSI
devices that previously needed the "NOLUNS" quirk. While this is
not strictly necessary on SCSI-2 devices, the spec allows it,
so we set it for SCSI-2 devices "just in case". See section 7.2.2 of
Draft X3T9.2 Rev 10L for details.
 1.62  28-Aug-1996  cgd (1) add a 'channel' field to scsi_link.
(2) in scsibusmatch, match channel as appropriate.
(3) add a scsiprint() function, to do the "scsibus at..."
and channel (if not SCSI_CHANNEL_ONLY_ONE) printing,
i.e. the common functionality that all SCSI drivers currently
should be doing.
 1.61  27-Aug-1996  cgd change cfprint_t type definition to take a const char *, rather than
a char *, because that's what was really intended, and because
if the print function modifies the string, various things could become
unhappy (so the string should _not_ be modified).
 1.60  24-Jul-1996  thorpej Match any Maxtor XT-8760S for the SDEV_NOLUNS quirk. Some of these
drives carry Sun OEM identifiers, as well.

Noticed by Taras Ivanenko <ivanenko@ctpa03.mit.edu>.
 1.59  05-Jul-1996  explorer add ZIP quirk for SDEV_NOMODESENSE
 1.58  05-Jul-1996  christos - Apply PR/2535: Add support for flex scsi disks.
- Add a quirk called SCSI_NOMODESENSE for drives like the iomega jaz,
that don't support mode sense.
 1.57  02-May-1996  neil branches: 1.57.4;
Added another quirked SCSI device, re PR 2320 from Manuel Bouyer
 1.56  22-Apr-1996  christos remove include of <sys/cpu.h>
 1.55  21-Mar-1996  scottr Add a SDEV_NOLUNS quirk for the Epson OMD-5010 removable MO cartridge drive.
 1.54  18-Mar-1996  hpeyerl Fix for NEC D3847 1.6gB drive which reported itself at lun[1-7].
 1.53  17-Mar-1996  thorpej New device attachment scheme:

- split softc size and match/attach out from cfdriver into
a new struct cfattach.

- new "attach" directive for files.*. May specify the name of
the cfattach structure, so that devices may be easily attached
to parents with different autoconfiguration semantics.
 1.52  05-Mar-1996  thorpej Add another broken drive that doesn't deal with LUNs properly to The List.
Fixes PR 1961, from Kevin P. Neal.
 1.51  05-Mar-1996  thorpej Normalize SCSI autoconfiguration output.
From Chris Demetriou <cgd@NetBSD.ORG>. Fixes PR #1958.
 1.50  22-Feb-1996  mycroft Add a SDEV_AUTOSAVE quirk for the DEC RZ55.
 1.49  18-Feb-1996  mycroft Add SCSI scanner support by Kenneth Stailey and Joachim Koenig-Baltes,
hacked a bit. Needs more work.
 1.48  14-Feb-1996  christos scsi prototypes
 1.47  12-Jan-1996  pk LUN deficient device: Tandberg 3600 (Ken Raeburn; PR#1933).
 1.46  31-Dec-1995  thorpej Add another broken CD-ROM drive to The List (Chinon CDS-525), per PR #1686.
From Kortelainen Mika <k125374@cs.tut.fi>.
 1.45  11-Dec-1995  mycroft Trim NULs, in addition to spaces, in scsi_strvis().
 1.44  01-Nov-1995  pk More rogues.
 1.43  13-Oct-1995  gwr Add quirk entries for Wangtek SCSI tapes. Also, add entry for
Tandberg 3800 (fixes PR#1592 - from Jochen Pohl).
 1.42  26-Sep-1995  thorpej Add another broken NEC CD-ROM drive to The List. Fixes PR #1451.
 1.41  21-Aug-1995  pk Set the scsi link before calling config_attach(), so target/lun info is
available to, say, dk_establish().
 1.40  14-Aug-1995  briggs CHINON CDS-535 version Q117 also needs NOLUNS. Assume all 535s do.
 1.39  13-Aug-1995  briggs Another SDEV_NOLUNS device from paul@pgoyette.bdt.com (Paul Goyette).
 1.38  06-Aug-1995  mycroft Add another Seagate disk to the list, and make all the disks match any
firmware revision.
 1.37  12-Jul-1995  cgd add/change a few quirks:
(1) all Chinon CDS-431 CD-ROMs (regardless of revision)
are forced to only having LUN 0, at the suggestion
of Michael Hitch.
(2) _force_ searching of extra LUNs for the Emulex MD21/S2
ESDI bridge. It's pre-SCSI 1, but knows about LUNs.
"amazing." From Jason Thorpe.
(3) recognize an Emulex tape adapter in front of a QIC-36
tape, and have it forced to only LUN 0. This is
an odd one; vendor, name, and rev strings are all
spaces. Anything that mathes this is very likely
broken, anyway, so might as well give it a shot.
Again from Jason Thorpe.
 1.36  12-Jul-1995  cgd implement SDEV_FORCELUNS flag, as suggested by Jason Thorpe.
 1.35  09-Jul-1995  cgd Morningstar SnapLink -> SDEV_NOLUNS, per Peter Galbavy in pr 1192.
 1.34  09-Jul-1995  cgd play the alphabetization game
 1.33  09-Jul-1995  cgd QUANTUM P105S 910-10-94x A.3 -> SDEV_NOLUNS
 1.32  27-Jun-1995  cgd another CD-ROM quirk, a la PR 1166
 1.31  24-Jun-1995  cgd add entry for another tweaked Texel CD-ROM. from pr 1151
 1.30  18-Jun-1995  mycroft Add another CD-ROM drive to The List.
 1.29  02-Jun-1995  pk Add `Maxtor LXT-213S', this time without a Sun OEM addition.
 1.28  04-Apr-1995  mycroft Add another broken CD-ROM drive to The List.
 1.27  22-Feb-1995  mycroft Be less picky about revision numbers for some broken devices.
 1.26  09-Feb-1995  pk Another Maxtor botch.
 1.25  01-Feb-1995  mycroft Add Exabyte 8200 to the list.
 1.24  30-Jan-1995  mycroft All revisions of the TDC 3600 are rogues.
 1.23  16-Jan-1995  mycroft Don't clear the debug flags when copying the prototype scsi_link.
 1.22  12-Jan-1995  mycroft Add two more broken devices.
 1.21  01-Jan-1995  mycroft Put Dan's broken tape drive in The List.
 1.20  30-Dec-1994  mycroft And a little better...
 1.19  30-Dec-1994  mycroft Deal with short inquiry response a little better.
 1.18  28-Dec-1994  mycroft Numerous changes. Many bugs fixed, better autoconfig, a few new features.
 1.17  03-Nov-1994  mycroft Oops; update scsibusmatch() arg list.
 1.16  03-Nov-1994  mycroft Always use direct configuration for SCSI devices.
 1.15  03-Nov-1994  mycroft Remove a couple of i386-specific hacks, and make a couple of others #ifdef
CONFIG_INDIRECT instead.
 1.14  29-Jun-1994  cgd New RCS ID's, take two. they're more aesthecially pleasant, and use 'NetBSD'
 1.13  11-Apr-1994  mycroft Fix various types. Remove some outdated flags.
 1.12  29-Mar-1994  mycroft New SCSI system, based on Julian's more recent work.
 1.11  25-Mar-1994  mycroft Put controller target in scsi_switch.
 1.10  17-Dec-1993  mycroft Canonicalize all #includes.
 1.9  27-May-1993  deraadt branches: 1.9.3;
scsi probing spent too much time on the bus -- sped it up now,
and simplified the message printing code (works the same)
 1.8  25-May-1993  deraadt patch00149 by Julian Elischer <julian@jules.dialix.oz.au> & Rodney Grimes.
When an error was encountered, the sd/cd drivers printed blockno&ff0000
rather that blockno.
 1.7  20-May-1993  cgd add rcsids and clean up file headers
 1.6  05-May-1993  deraadt fixed bug from last commit
 1.5  04-May-1993  deraadt support for making dev->id_alive be set, this is for iostat to
find disk devices. wee bit of a kludge. sub-device attach()
routines must now return 1 for successful attach(), 0 otherwise.
Other bsd's do this too..
 1.4  20-Apr-1993  deraadt a test for mycroft..
 1.3  19-Apr-1993  mycroft Don't overwrite global kernel version string.
 1.2  12-Apr-1993  deraadt new scsi subsystem.
changes also in config/mkioconf.c
i386/isa/wd.c, fd.c, and all scsi drivers.
 1.1  21-Mar-1993  cgd after 0.2.2 "stable" patches applied
 1.9.3.7  22-Jan-1994  briggs lu -> lun in SCSI_DEBUG section...
 1.9.3.6  25-Nov-1993  mycroft Compare the device name rather than the attach function.
 1.9.3.5  24-Nov-1993  mycroft Final tweaks to get it going.
 1.9.3.4  24-Nov-1993  mycroft Some cleanup, and fix a bug I just introduced.
 1.9.3.3  24-Nov-1993  mycroft More construction...
 1.9.3.2  24-Nov-1993  mycroft Still under construction...
 1.9.3.1  24-Nov-1993  mycroft Under construction...
 1.57.4.1  31-Jul-1996  jtc Pulled up diff between revs 1.59 and 1.60 by request from Jason Thorpe
 1.73.6.1  12-Mar-1997  is Merge in changes from Trunk
 1.84.2.1  23-Aug-1997  thorpej Update marc-pcmcia branch from trunk.
 1.88.2.5  14-Oct-1997  thorpej Update marc-pcmcia branch from trunk.
 1.88.2.4  22-Sep-1997  thorpej Update marc-pcmcia branch from trunk.
 1.88.2.3  16-Sep-1997  thorpej Update marc-pcmcia branch from trunk.
 1.88.2.2  27-Aug-1997  thorpej Update marc-pcmcia branch from trunk.
 1.88.2.1  27-Aug-1997  thorpej file scsiconf.c was added on branch marc-pcmcia on 1997-08-27 23:33:19 +0000
 1.93.2.1  05-May-1998  mycroft Pull up 1.96, per request of scottr. Also do 1.95 and 1.97-1.100.
 1.102.2.2  08-Aug-1998  eeh Revert cdevsw mmap routines to return int.
 1.102.2.1  30-Jul-1998  eeh file scsiconf.c was added on branch eeh-paddr_t on 1998-08-08 03:06:51 +0000
 1.122.4.1  02-Aug-1999  thorpej Update from trunk.
 1.122.2.3  16-Jan-2000  he Apply patch (requested by ad):
When probing a SCSI target, do not report an error if the target
indicates that LUNs are not supported.
 1.122.2.2  27-Nov-1999  he Pull up revision 1.123 (requested by dmcmahill):
Add SCSI quirk for UMAX Astra 1220S scanner: skip LUN check,
fixes PR#7991.
 1.122.2.1  10-Nov-1999  he Pull up revisions 1.129-1.130 (requested by hwr):
Add quirks for Toshiba XM-3401TA SCSI CD-ROM and CDU-561 CD-ROM,
fixing PR#7438 and PR#8608.
 1.128.2.2  27-Dec-1999  wrstuden Pull up to last week's -current.
 1.128.2.1  21-Dec-1999  wrstuden Initial commit of recent changes to make DEV_BSIZE go away.

Runs on i386, needs work on other arch's. Main kernel routines should be
fine, but a number of the stand programs need help.

cd, fd, ccd, wd, and sd have been updated. sd has been tested with non-512
byte block devices. vnd, raidframe, and lfs need work.

Non 2**n block support is automatic for LKM's and conditional for kernels
on "options NON_PO2_BLOCKS".
 1.130.4.1  15-Nov-1999  fvdl Sync with -current
 1.130.2.13  23-Apr-2001  ad If SCSIPI_CHAN_NOSETTLE is set in the channel's flags, then don't bother
with SCSI_DELAY.
 1.130.2.12  11-Apr-2001  mjacob oops: reversed conditional
 1.130.2.11  11-Apr-2001  mjacob Make scsipi_channel_init a function returning an int- non-zero means
it failed to initialize the channel (this should be acceptable)- in
which case we complain and don't schedule bus probing for later.

We make the internal memory allocations for the periph and the chan_periphs
array M_NOWAIT- this way we have a hope of booting instead of silently hanging
during boot if we've run out of memory.
 1.130.2.10  12-Mar-2001  bouyer Sync with HEAD.
 1.130.2.9  11-Feb-2001  bouyer Sync with HEAD.
 1.130.2.8  08-Dec-2000  bouyer Sync with HEAD.
 1.130.2.7  22-Nov-2000  bouyer Sync with HEAD.
 1.130.2.6  20-Nov-2000  bouyer Update thorpej_scsipi to -current as of a month ago
A i386 GENERIC kernel compiles without the siop, ahc and bha drivers
(will be updated later). i386 IDE/ATAPI and ncr work, as well as
sparc/esp_sbus. alpha should work as well (untested yet).
siop, ahc and bha will be updated once I've updated the branch to current
-current, as well as machine-dependant code.

Main changes to the scsipi code itself:
- add a scsipi_channel->type to allow umass to attach to both atapibus and
scsibus. Will die when IDE is converted from ata_atapi_attach to
scsipi_channel/scsipi_adapter
- Add a chan_defquirks to scsipi_channel so that adapters can pass a default
set of quirks to be set for each device attached
- add adapt_getgeom and adapt_accesschk callbacks
 1.130.2.5  04-Feb-2000  thorpej Make sure the channel's completion thread exits when the channel
is detached, and completely encapsulate the way periph's are stored
by the channel.
 1.130.2.4  01-Nov-1999  thorpej Fixup the SC_DEBUG() stuff for the new world order.
 1.130.2.3  26-Oct-1999  thorpej Deal a little more gracefully with the fact that xfer mode parameters
are for the I_T Nexus, and make all xfer mode updates `async events'.
 1.130.2.2  20-Oct-1999  thorpej Sync w/ trunk.
 1.130.2.1  19-Oct-1999  thorpej Completely rewritten scsipi_xfer execution engine:
- All xfers are queued in the mid-layer, rather than doing so in an
ad-hoc fashion in individual adapter drivers.
- Adapter/channel resource management in the mid-layer, avoids even trying
to start running an xfer if the adapter/channel doesn't have the resources.
- Better communication between the mid-layer and the adapters.
- Asynchronous event notification mechanism from adapter to mid-layer and
peripherals.
- Better peripheral queue management: freeze/thaw, sorted requeueing during
recovery, etc.
- Clean separation of peripherals, adapters, and adapter channels (no more
scsipi_link).
- Kernel thread for each scsipi_channel makes error recovery much easier
(no more dealing with interrupt context when recovering from an error).
- Mid-layer support for tagged queueing: commands can have the tag type
set explicitly, tag IDs are allocated in the mid-layer (thus eliminating
the need to use buggy tag ID allocation schemes in many adapter drivers).

There is a lot more work to do, but this correctly functions for the most
part on several file servers I run.
 1.142.2.1  22-Jun-2000  minoura Sync w/ netbsd-1-5-base.
 1.147.2.6  11-Feb-2003  msaitoh Pull up revision 1.199 (requested by bouyer):
Add SDEV_NOLUNS quirk entry for "NEC ", "CD-ROM DRIVE:502".
Fixes kern/18479 .
 1.147.2.5  04-Sep-2002  itojun sys/dev/scsipi/scsipiconf.c 1.186 via patch (bouyer)
add quirk entry for yet another broken sony cdrom. Fix kern/17773
 1.147.2.4  13-Nov-2001  he Pull up revision 1.162 (via patch, requested by christos):
Add a ``no tagged queueing'' for an old Micropolis drive. Fixes
PR#14256.
 1.147.2.3  25-Oct-2001  he Pull up revision 1.153 (requested by ad):
Add Mylex DACC960, CAC-EISA, and I2O block/SCSI drivers.
 1.147.2.2  28-Aug-2000  mjacob Add support for accelleration SCSI ioctls (that allow for the
midlayer to enable sync/wide/tagged).

Approved for pullup to netbsd-1-5 by thorpej@netbsd.org.
 1.147.2.1  03-Aug-2000  bouyer pullup 1.147 -> 1.148 (approved by thorpej):
Add quirk entry for NEDICOM CRD-BP2, from kern/10738.
 1.156.2.21  15-Jan-2003  thorpej Sync with HEAD.
 1.156.2.20  03-Jan-2003  thorpej Sync with HEAD.
 1.156.2.19  11-Dec-2002  thorpej Sync with HEAD.
 1.156.2.18  11-Nov-2002  nathanw Catch up to -current
 1.156.2.17  18-Oct-2002  nathanw Catch up to -current.
 1.156.2.16  17-Sep-2002  nathanw Catch up to -current.
 1.156.2.15  13-Aug-2002  nathanw Catch up to -current.
 1.156.2.14  01-Aug-2002  nathanw Catch up to -current.
 1.156.2.13  12-Jul-2002  nathanw No longer need to pull in lwp.h; proc.h pulls it in for us.
 1.156.2.12  24-Jun-2002  nathanw Curproc->curlwp renaming.

Change uses of "curproc->l_proc" back to "curproc", which is more like the
original use. Bare uses of "curproc" are now "curlwp".

"curproc" is now #defined in proc.h as ((curlwp) ? (curlwp)->l_proc) : NULL)
so that it is always safe to reference curproc (*de*referencing curproc
is another story, but that's always been true).
 1.156.2.11  20-Jun-2002  nathanw Catch up to -current.
 1.156.2.10  17-Apr-2002  nathanw Catch up to -current.
 1.156.2.9  01-Apr-2002  nathanw Catch up to -current.
(CVS: It's not just a program. It's an adventure!)
 1.156.2.8  28-Feb-2002  nathanw Catch up to -current.
 1.156.2.7  08-Jan-2002  nathanw Catch up to -current.
 1.156.2.6  14-Nov-2001  nathanw Catch up to -current.
 1.156.2.5  22-Oct-2001  nathanw Catch up to -current.
 1.156.2.4  21-Sep-2001  nathanw Catch up to -current.
 1.156.2.3  24-Aug-2001  nathanw Catch up with -current.
 1.156.2.2  21-Jun-2001  nathanw Catch up to -current.
 1.156.2.1  05-Mar-2001  nathanw Initial commit of scheduler activations and lightweight process support.
 1.158.2.7  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.158.2.6  06-Sep-2002  jdolecek sync kqueue branch with HEAD
 1.158.2.5  23-Jun-2002  jdolecek catch up with -current on kqueue branch
 1.158.2.4  11-Feb-2002  jdolecek Sync w/ -current.
 1.158.2.3  10-Jan-2002  thorpej Sync kqueue branch with -current.
 1.158.2.2  13-Sep-2001  thorpej Update the kqueue branch to HEAD.
 1.158.2.1  03-Aug-2001  lukem update to -current
 1.161.2.2  26-Sep-2001  fvdl * add a VCLONED vnode flag that indicates a vnode representing a cloned
device.
* rename REVOKEALL to REVOKEALIAS, and add a REVOKECLONE flag, to pass
to VOP_REVOKE
* the revoke system call will revoke all aliases, as before, but not the
clones
* vdevgone is called when detaching a device, so make it use REVOKECLONE
to get rid of all clones as well
* clean up all uses of VOP_OPEN wrt. locking.
* add a few VOPS to spec_vnops that need to do something when it's a
clone vnode (access and getattr)
* add a copy of the vnode vattr structure of the original 'master' vnode
to the specinfo of a cloned vnode. could possibly redirect getattr to
the 'master' vnode, but this has issues with revoke
* add a vdev_reassignvp function that disassociates a vnode from its
original device, and reassociates it with the specified dev_t. to be
used by cloning devices only, in case a new minor is allocated.
* change all direct references in drivers to v_devcookie and v_rdev
to vdev_privdata(vp) and vdev_rdev(vp). for diagnostic purposes
when debugging race conditions that still exist wrt. locking and
revoking vnodes.
* make the locking state of a vnode consistent when passed to
d_open and d_close (unlocked). locked would be better, but has
some deadlock issues
 1.161.2.1  07-Sep-2001  thorpej Commit my "devvp" changes to the thorpej-devvp branch. This
replaces the use of dev_t in most places with a struct vnode *.

This will form the basic infrastructure for real cloning device
support (besides being architecurally cleaner -- it'll be good
to get away from using numbers to represent objects).
 1.163.2.1  12-Nov-2001  thorpej Sync the thorpej-mips-cache branch with -current.
 1.184.4.4  15-Mar-2004  jmc Pullup rev 1.220 (requested by bouyer in ticket #1625)

Add a drive with broken tagged queuing support. PR#23815
 1.184.4.3  02-Jun-2003  tron Pull up revision 1.198 (requested by bouyer in ticket #1155):
Remove revision in quirk entry for TOSHIBA XM-4101TASUNSLCD.
The same drive with a newer revision also fails, so assume all revisions
are bad until proven otherwise.
 1.184.4.2  02-Jun-2003  tron Pull up revision 1.199 (requested by bouyer):
Add PQUIRK_NOLUNS entry for "NEC ", "CD-ROM DRIVE:502".
Fixes PR kern/18479
 1.184.4.1  02-Aug-2002  lukem Pull up revision 1.186 (requested by bouyer in ticket #608):
Add yet another broken sony cdrom. This one, in addition to broken LUN
handling, has broken sync negotiation. Also add PQUIRK_NOWIDE to be safe.
Fix PR kern/17773.
 1.184.2.2  29-Aug-2002  gehenna catch up with -current.
 1.184.2.1  16-May-2002  gehenna Add the character device switch.
 1.207.2.9  11-Dec-2005  christos Sync with head.
 1.207.2.8  10-Nov-2005  skrll Sync with HEAD. Here we go again...
 1.207.2.7  04-Mar-2005  skrll Sync with HEAD.

Hi Perry!
 1.207.2.6  21-Sep-2004  skrll Fix the sync with head I botched.
 1.207.2.5  18-Sep-2004  skrll Sync with HEAD.
 1.207.2.4  25-Aug-2004  skrll Sync with HEAD.
 1.207.2.3  12-Aug-2004  skrll Sync with HEAD.
 1.207.2.2  03-Aug-2004  skrll Sync with HEAD
 1.207.2.1  02-Jul-2003  darrenr Apply the aborted ktrace-lwp changes to a specific branch. This is just for
others to review, I'm concerned that patch fuziness may have resulted in some
errant code being generated but I'll look at that later by comparing the diff
from the base to the branch with the file I attempt to apply to it. This will,
at the very least, put the changes in a better context for others to review
them and attempt to tinker with removing passing of 'struct lwp' through
the kernel.
 1.220.4.1  20-Feb-2007  tron Pull up following revision(s) (requested by bouyer in ticket #11051):
sys/dev/scsipi/scsiconf.c: revision 1.242 via patch
The SEAGATE ST318203LSUN18G announces DT only capabilitie although it also
supports ST. Because of this the HBA doesn't initiate sync/wide negotiation,
so add PQUIRK_CAP_SYNC | PQUIRK_CAP_WIDE16 for this drive; fix
problem reported by Havard Eidnes.
 1.226.6.1  19-Mar-2005  yamt sync with head. xen and whitespace. xen part is not finished.
 1.226.4.1  29-Apr-2005  kent sync with -current
 1.229.2.1  19-Feb-2007  tron Pull up following revision(s) (requested by bouyer in ticket #1668):
sys/dev/scsipi/scsiconf.c: revision 1.242 via patch
The SEAGATE ST318203LSUN18G announces DT only capabilitie although it also
supports ST. Because of this the HBA doesn't initiate sync/wide negotiation,
so add PQUIRK_CAP_SYNC | PQUIRK_CAP_WIDE16 for this drive; fix
problem reported by Havard Eidnes.
 1.230.2.5  21-Jan-2008  yamt sync with head
 1.230.2.4  03-Sep-2007  yamt sync with head.
 1.230.2.3  26-Feb-2007  yamt sync with head.
 1.230.2.2  30-Dec-2006  yamt sync with head.
 1.230.2.1  21-Jun-2006  yamt sync with head.
 1.232.6.1  29-Nov-2005  yamt sync with head.
 1.234.12.1  31-Mar-2006  tron Merge 2006-03-31 NetBSD-current into the "peter-altq" branch.
 1.234.10.1  19-Apr-2006  elad sync with head.
 1.234.8.2  03-Sep-2006  yamt sync with head.
 1.234.8.1  01-Apr-2006  yamt sync with head.
 1.234.6.1  22-Apr-2006  simonb Sync with head.
 1.234.4.1  09-Sep-2006  rpaulo sync with head
 1.238.4.2  10-Dec-2006  yamt sync with head.
 1.238.4.1  22-Oct-2006  yamt sync with head
 1.238.2.2  12-Jan-2007  ad Sync with head.
 1.238.2.1  18-Nov-2006  ad Sync with head.
 1.241.4.2  12-Mar-2007  rmind Sync with HEAD.
 1.241.4.1  27-Feb-2007  yamt - sync with head.
- move sched_changepri back to kern_synch.c as it doesn't know PPQ anymore.
 1.241.2.1  19-Feb-2007  riz Pull up following revision(s) (requested by bouyer in ticket #452):
sys/dev/scsipi/scsiconf.c: revision 1.242
The SEAGATE ST318203LSUN18G announces DT only capabilitie although it also
supports ST. Because of this the HBA doesn't initiate sync/wide negotiation,
so add PQUIRK_CAP_SYNC | PQUIRK_CAP_WIDE16 for this drive; fix
problem reported by Havard Eidnes.
 1.243.26.1  11-Dec-2007  yamt sync with head.
 1.243.24.1  26-Dec-2007  ad Sync with head.
 1.243.22.1  18-Feb-2008  mjf Sync with HEAD.
 1.243.16.1  09-Jan-2008  matt sync with HEAD
 1.243.14.2  08-Dec-2007  jmcneill Rename pnp(9) -> pmf(9), as requested by many.
 1.243.14.1  06-Nov-2007  joerg Refactor PNP API:
- Make suspend/resume directly a device functionality. It consists of
three layers (class logic, device logic, bus logic), all of them being
optional. This replaces D0/D3 transitions.
- device_is_active returns true if the device was not disabled and was
not suspended (even partially), device_is_enabled returns true if the
device was enabled.
- Change pnp_global_transition into pnp_system_suspend and
pnp_system_resume. Before running any suspend/resume handlers, check
that all currently attached devices support power management and bail
out otherwise. The latter is not done for the shutdown/panic case.
- Make the former bus-specific generic network handlers a class handler.
- Make PNP message like volume up/down/toogle PNP events. Each device
can register what events they are interested in and whether the handler
should be global or not.
- Introduce device_active API for devices to mark themselve in use from
either the system or the device. Use this to implement the idle handling
for audio and input devices. This is intended to replace most ad-hoc
watchdogs as well.
- Fix somes situations in which audio resume would lose mixer settings.
- Make USB host controllers better deal with suspend in the light of
shared interrupts.
- Flush filesystem cache on suspend.
- Flush disk caches on suspend. Put ATA disks into standby on suspend as
well.
- Adopt drivers to use the new PNP API.
- Fix a critical bug in the generic cardbus layer that made D0->D3
break.
- Fix ral(4) to set if_stop.
- Convert cbb(4) to the new PNP API.
- Apply the PCI Express SCI fix on resume again.
 1.244.2.1  08-Jan-2008  bouyer Sync with HEAD
 1.245.6.5  28-Sep-2008  mjf Sync with HEAD.
 1.245.6.4  29-Jun-2008  mjf Sync with HEAD.
 1.245.6.3  02-Jun-2008  mjf Sync with HEAD.
 1.245.6.2  06-Apr-2008  mjf - after some discussion with agc@ i agreed it would be a good idea to move
device_unregister_* to device_deregister_* to be more like the pmf(9)
functions, especially since a lot of the time the function calls are next
to each other.

- add device_register_name() support for dk(4).
 1.245.6.1  05-Apr-2008  mjf - add "file-system DEVFS" and "pseudo-device devfsctl" to conf/std seeing
as these are always needed.

- convert many, many drivers over to the New Devfs World Order. For a
list of device drivers yet to be converted see,
http://www.netbsd.org/~mjf/devfs-todo.html.

- add a new device_unregister_all(device_t) function to remove all device
names associated with a device_t, which saves us having to construct
device names when the driver is detached.

- add a DEV_AUDIO type for devices.
 1.246.4.5  11-Aug-2010  yamt sync with head.
 1.246.4.4  11-Mar-2010  yamt sync with head
 1.246.4.3  16-May-2009  yamt sync with head
 1.246.4.2  04-May-2009  yamt sync with head.
 1.246.4.1  16-May-2008  yamt sync with head.
 1.246.2.2  17-Jun-2008  yamt sync with head.
 1.246.2.1  18-May-2008  yamt sync with head.
 1.247.2.2  18-Sep-2008  wrstuden Sync with wrstuden-revivesa-base-2.
 1.247.2.1  23-Jun-2008  wrstuden Sync w/ -current. 34 merge conflicts to follow.
 1.248.2.2  18-Jul-2008  simonb Sync with head.
 1.248.2.1  03-Jul-2008  simonb Sync with head.
 1.249.2.1  19-Oct-2008  haad Sync with HEAD.
 1.250.8.1  13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.250.2.1  28-Apr-2009  skrll Sync with HEAD.
 1.255.4.3  31-May-2011  rmind sync with head
 1.255.4.2  21-Apr-2011  rmind sync with head
 1.255.4.1  30-May-2010  rmind sync with head
 1.255.2.1  30-Apr-2010  uebayasi Sync with HEAD.
 1.258.2.1  06-Jun-2011  jruoho Sync with HEAD.
 1.262.10.4  03-Sep-2012  riz Pull up following revision(s) (requested by bouyer in ticket #523):
sys/dev/scsipi/scsiconf.c: revision 1.269
If the controller supports more than 256 commands per target,
clamp it to 256 (maximum number of tags in SCSI). Newer controllers
(such as mpii(4), and mfi(4) when fixed to announce tagged queuing support)
support more than 256 outstanding commands and don't use the scsi tag,
but at this time scsipi will always allocate a tag, and panic if a periph
tries to send more than 256 commands.
 1.262.10.3  22-May-2012  riz branches: 1.262.10.3.2;
Pull up following revision(s) (requested by jakllsch in ticket #277):
sys/dev/scsipi/scsiconf.c: revision 1.268
Fix locking issue triggered by drvctr -r of a scsibus(4).
Pullup to netbsd-6 should be requested.
 1.262.10.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.262.10.1  19-Mar-2012  riz Pull up following revision(s) (requested by mrg in ticket #125):
sys/dev/scsipi/scsiconf.c: revision 1.263
sys/dev/scsipi/scsiconf.c: revision 1.264
sys/dev/ic/ncr53c9x.c: revision 1.144
sys/dev/ic/ninjascsi32.c: revision 1.22
sys/dev/usb/uhub.c: revision 1.117
take the kernel lock in functions called from attach*().
scsidevdetached ioctl path enters scsipi code without kernel lock
and this upsets the newer kasserts. take kernel lock here.
take the kernel lock a few more places when doing detach, to avoid
triggering KERNEL_LOCK_P() asserts in both scsi and usb code.
with this and other recent fixes i can now "drvctl -d ehci0".
 1.262.10.3.2.1  01-Nov-2012  matt sync with netbsd-6-0-RELEASE.
 1.262.8.3  02-Jun-2012  mrg sync to latest -current.
 1.262.8.2  29-Apr-2012  mrg sync to latest -current.
 1.262.8.1  12-Mar-2012  mrg merge scsiconf.c 1.264.
 1.262.4.4  22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.262.4.3  30-Oct-2012  yamt sync with head
 1.262.4.2  23-May-2012  yamt sync with head.
 1.262.4.1  17-Apr-2012  yamt sync with head
 1.269.4.1  18-May-2014  rmind sync with head
 1.269.2.2  03-Dec-2017  jdolecek update from HEAD
 1.269.2.1  20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.272.2.1  10-Aug-2014  tls Rebase.
 1.273.4.4  28-Aug-2017  skrll Sync with HEAD
 1.273.4.3  05-Dec-2016  skrll Sync with HEAD
 1.273.4.2  09-Jul-2016  skrll Sync with HEAD
 1.273.4.1  29-May-2016  skrll Sync with HEAD
 1.275.2.2  20-Mar-2017  pgoyette Sync with HEAD
 1.275.2.1  07-Jan-2017  pgoyette Sync with HEAD. (Note that most of these changes are simply $NetBSD$
tag issues.)
 1.278.2.1  21-Apr-2017  bouyer Sync with HEAD
 1.279.6.3  19-Dec-2020  martin Pull up following revision(s) (requested by tsutsui in ticket #1640):

sys/dev/scsipi/scsiconf.c: revision 1.283

Add NOLUNS quirk for more SEAGATE SCA/WIDE drives.

Tested on NetBSD/luna68k and LUNA with SCA 80pin -> NARROW 50pin and
WIDE 68pin -> NARROW 50pin connectors.
 1.279.6.2  13-Jul-2020  martin Pull up following revision(s) (requested by kim in ticket #1571):

sys/dev/scsipi/scsiconf.c: revision 1.288

Continue scanning a SCSI bus when a LUN is reported not present

This fixes disk attachment under Qemu when there is no disk on LUN 0 on
a SCSI bus but there is a disk on LUN 1. The inquiry for LUN 0 returns
SID_QUAL_LU_NOTPRESENT & T_NODEVICE. Quirks are only checked if neither
one of those are set, so cannot use a quirk entry.

Use case 1: Proxmox 6 configures each disk on its own bus when using
the "Virtio SCSI single" SCSI controller. However, while the "scsi0"
disk is on LUN 0, the "scsi1" disk is on LUN 1.

Use case 2: A Linode boot profile with multiple disks results in
the first disk ("sda") on LUN 1, while the second disk ("sdb") is
on LUN 0, each on their own bus.
 1.279.6.1  21-Jun-2017  snj Pull up following revision(s) (requested by mlelstv in ticket #53):
sys/dev/scsipi/atapiconf.c: revision 1.91
sys/dev/scsipi/cd.c: revision 1.341
sys/dev/scsipi/scsi_base.c: revision 1.92
sys/dev/scsipi/scsiconf.c: revision 1.280
sys/dev/scsipi/scsipi_base.c: revisions 1.176, 1.177
sys/dev/scsipi/sd.c: revision 1.325
sys/dev/scsipi/ss.c: revision 1.89
sys/dev/scsipi/st.c: revision 1.231
The atapibus detach path did hold the channel mutex while calling into autoconf,
which would trigger a panic when unplugging a USB ATAPI CDROM.
Align detach code for scsibus and atapibus to fix this.
Also avoid races when detaching devices by replacing callout_stop with
callout_halt.
--
pass config_detach error to caller.
 1.280.6.3  13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.280.6.2  08-Apr-2020  martin Merge changes from current as of 20200406
 1.280.6.1  10-Jun-2019  christos Sync with HEAD
 1.280.4.3  18-Jan-2019  pgoyette Synch with HEAD
 1.280.4.2  20-Oct-2018  pgoyette Sync with head
 1.280.4.1  06-Sep-2018  pgoyette Sync with HEAD

Resolve a couple of conflicts (result of the uimin/uimax changes)
 1.284.4.2  13-Jul-2020  martin Pull up following revision(s) (requested by kim in ticket #1000):

sys/dev/scsipi/scsiconf.c: revision 1.288

Continue scanning a SCSI bus when a LUN is reported not present

This fixes disk attachment under Qemu when there is no disk on LUN 0 on
a SCSI bus but there is a disk on LUN 1. The inquiry for LUN 0 returns
SID_QUAL_LU_NOTPRESENT & T_NODEVICE. Quirks are only checked if neither
one of those are set, so cannot use a quirk entry.

Use case 1: Proxmox 6 configures each disk on its own bus when using
the "Virtio SCSI single" SCSI controller. However, while the "scsi0"
disk is on LUN 0, the "scsi1" disk is on LUN 1.

Use case 2: A Linode boot profile with multiple disks results in
the first disk ("sda") on LUN 1, while the second disk ("sdb") is
on LUN 0, each on their own bus.
 1.284.4.1  04-May-2020  martin Pull up following revision(s) (requested by jdc in ticket #885):

sys/dev/scsipi/scsiconf.c: revision 1.287

Don't attempt to read opcodes and their timeouts at attach time for
old devices. The MAINTENANCE IN command was introduced with SCSI-3
and sending it to older peripherals can cause timeouts or them not
to respond to further requests.
 1.285.2.1  29-Feb-2020  ad Sync with head.
 1.290.4.4  03-Apr-2021  thorpej config_attach_loc() -> config_attach() with CFARG_LOCATORS argument.
 1.290.4.3  28-Mar-2021  thorpej Unwrap a line.
 1.290.4.2  21-Mar-2021  thorpej CFARG_IATTR usage audit:

If a device carries only one interface attribute, there is no need
to specify it when calling config_search(); that specification is
meant only to disambiguate which interface attribute (which is a
proxy for "what kind of attach args are being used") is having
children attached. cfparent_match() will take care of ensuring that
any potential children can attach to one of the parent's iterface
attributes, and if the parent only carries one, no disambiguation is
necessary.
 1.290.4.1  20-Mar-2021  thorpej The proliferation if config_search_*() and config_found_*() combinations
is a little absurd, so begin to tidy this up:

- Introduce a new cfarg_t enumerated type, that defines the types of
tag-value variadic arguments that can be passed to the various
config_*() functions (CFARG_SUBMATCH, CFARG_IATTR, and CFARG_LOCATORS,
for now, plus a CFARG_EOL sentinel).
- Collapse config_search_*() into config_search() that takes these
variadic arguments.
- Convert all call sites of config_search_*() to the new signature.
Noticed several incorrect usages along the way, which will be
audited in a future commit.
 1.291.8.1  04-Aug-2021  thorpej Adapt to CFARGS().

RSS XML Feed