Commit Graph

802 Commits

Author SHA1 Message Date
ad 13499203a2 Two changes submitted by Sergey Svishchev <svs@ropnet.ru>:
- Don't send START UNIT upon open if the drive is playing audio (PR 11768).
- If we receive sense indicating that the media changed, retry (PR 8326).
2001-08-20 11:31:10 +00:00
ad ab54b70cae Cosmetic change. 2001-08-20 11:20:51 +00:00
ad 52449ef3bf Medium Not Present has number of defined ASCQs. Pointed out by Sergey
Svishchev <svs@ropnet.ru> in PR 8326.
2001-08-20 07:47:01 +00:00
ad d861b4992a Add descriptions for Medium Not Present ASCQs. 2001-08-20 07:41:14 +00:00
yamt 75ed9ccf7f fix scsipi_target_detach with wildcard target. 2001-08-19 14:05:13 +00:00
eeh 0cbe02398a Add support for smaller sector sizes so we can mount ffs filesystems. 2001-08-15 22:21:01 +00:00
bouyer f2cacede49 Adn scsipi_target_detach() and scsipi_thread_call_callback() as discussed
on tech-kern. scsipi_target_detach() accept wildcard target/lun as requested.
2001-07-18 20:19:24 +00:00
thorpej aafd882086 bcmp -> memcmp 2001-07-18 18:27:08 +00:00
thorpej 38bdc75312 bcopy -> memcpy 2001-07-18 18:25:41 +00:00
thorpej 03746a443a bzero -> memset 2001-07-18 18:21:04 +00:00
bouyer c399f05222 scsipi_set_xfer_mode(): issue a ADAPTER_REQ_SET_XFER_MODE request to adapter
only if we succesfully attached at last one device for this I_T.
2001-07-13 20:00:23 +00:00
wiz cc0b68092e Correct various misspellings of 'transfer' and inflected forms. 2001-07-08 18:06:42 +00:00
ross f54fe9f3b1 compile tweak for non-SCSIVERBOSE 2001-06-27 23:14:26 +00:00
bouyer 6a91469e6d Some ATAPI CD occasionally reports "ATA illegal indication length" for
a request sense command, but the sense is properly transfered anyway.
Ignore the error for this case.
2001-06-27 13:22:36 +00:00
bouyer 4fadc33006 Better diagnostic when a REQUEST SENSE is terminated with CHECK CONDITION. 2001-06-27 13:21:30 +00:00
bouyer 90d0e67408 Add a XS_CTL_SILENT_NODEV flag: if the sense info is "not ready, medium
not present" don't print any message but still return ENODEV.
Use this in cd driver to allow open of character raw partition even if
the drive is empty (older drives fails at LOAD_UNLOAD time, newer
ones fail at TEST_UNIT_READY time).
2001-06-26 15:32:02 +00:00
bouyer f47d097cf5 Make it compile with SCSIPI_DEBUG 2001-06-26 12:46:56 +00:00
wiz 15223234d7 Fix some typos in comments. 2001-06-24 10:18:13 +00:00
lukem b7f8c7eb86 delint 2001-06-19 10:43:26 +00:00
bouyer 49ed2592ce Add my copyrigth and remove the older ones. None of the original authors of
the st driver wrote something in this file.
2001-06-18 09:41:06 +00:00
bouyer 0a63f01fef 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.
2001-06-18 09:05:05 +00:00
bjh21 4bc5a3b295 Add explicit support for IDE and SCSI adaptors which don't support interrupts.
On such adaptors, all transfers are done in polling mode.

OK'ed by Manuel on tech-kern.
2001-06-13 18:17:38 +00:00
pk b9e61207ff Add nolun/nosync quirk for "IBM CDRM00201 !F"
See PR#13031.
2001-06-11 13:58:18 +00:00
bouyer 88f3192778 Fix typo in sddump() which caused core dumps to fail with ENXIO. 2001-06-01 08:39:54 +00:00
tron 264d7e1264 Install "dev/scsipi/scsipi_cd.h" again because it is e.g. used by the
CD player include in version 2.x of the "kdemultimedia" package.
2001-05-31 21:54:07 +00:00
bouyer 708bb529d3 uninitialised variable (from Krister Walfridsson):
in st_cmprss(), init flags to 0 (never changed, but this should change soon
anyway, for ATAPI tapes support)
2001-05-30 20:28:17 +00:00
mrg c13e3a6693 use _KERNEL_OPT 2001-05-30 11:40:35 +00:00
chs ffcbc851a0 fix some problems in sddump() with uninitialized variables. 2001-05-29 01:02:39 +00:00
bouyer 72b4ba8aed In scsipi_channel_thaw(), if the count drops to 0, call scsipi_run_queue(). 2001-05-23 15:50:32 +00:00
chs fae4d6d720 fix typo in previous revision so that the scsi code compiles again. 2001-05-23 02:16:19 +00:00
mjacob b9eb902304 Make SDRETRIES an option you can dig out of opt_scsi.h.
Add SD_IO_TIMEOUT (an option in opt_scsi.h) also, which defaults to the
normal 60 * 1000 timeout for normal read/write commamds. This allows you
to shorten or lengthen the timeout as needed.
2001-05-22 18:59:57 +00:00
mjacob 38f6ada8b6 Add SDRETRIES and SD_IO_TIMEOUT option for sd. 2001-05-22 18:58:15 +00:00
bouyer 2a604875d6 Remove one extra byte from scsipi_mode_select; pointed out by Juergen
Hannken-Illjes.
2001-05-22 15:14:24 +00:00
mjacob 3462fe5d99 Remove reference to adapter_q in scsipi structure. Comment about the
usage of channel_q.
2001-05-21 15:50:46 +00:00
christos 2ed6d9dbf7 PR/12991: Dave Huang: DVD ioctls don't work because we send the wrong size
CDB (16 instead of 12).
2001-05-20 21:07:58 +00:00
is 5c9dc5b0d0 When abusing structs to describe on-wire (or in-hardware) data structures,
they need to be packed. (Without this, breaks on at least m68k.)
2001-05-18 21:11:43 +00:00
enami e4334b830d Don't capitalize the word sync or async. It's inconsistient with other
messages.
2001-05-18 16:25:07 +00:00
bouyer 8b5bf22895 Workaround for broken drives (explained to me by Chris G. Demetriou):
some devices can't handle tag number larger than some values and always
reject commands with QUEUE FULL if the tag number is larger than this.
Under some circonstances the scsipi system may not decrease periph_openings
(as a workaround of other odd behavior) and we may end up requeuing the command
with a hight tag value again, and the driver could loop on this.
Workaround: in case of queue full, decrease periph_openings to
min(periph_active - 1, periph_openings - 1) so that, after some iteration,
periph_openings is less than the max tag value acceptable by the device.

Solves the problem with tagged queuing on ncr53c9x for me.
2001-05-18 12:56:28 +00:00
bouyer 7ddcb8122d SDEV_DB -> SCSIPI_DB 2001-05-17 20:02:56 +00:00
lukem b6b83e2ec3 delint; use MAX(sizeof(..),sizeof(..)) instead of max(...) for array size 2001-05-15 14:03:27 +00:00
lukem 13a9902fc6 delint: can't have an empty case item at the end of a switch; need a ; at least 2001-05-15 13:53:20 +00:00
bouyer bc980d7eba Use SCSI/ATAPI common definition for MODE_{SELECT,SENSE}{,_BIG}. Define
functions to send theses commands in scsipi_base.c and use them instead
of ad-hoc commands setups.
2001-05-14 20:35:27 +00:00
drochner 06fc2f85cc Since __HAVE_OLD_DISKLABEL, DISKMINOR(u, p) isn't continuous over "p"
anymore. So we can't pass a range to vdevgone() but have to loop over the
partitions explicitely.
(otherwise the next device unit will be killed)
2001-05-06 18:30:56 +00:00
hannken 3446a61cb3 Fix a typo from thorpej_scsipi merge. No-sense information with retval == 0
should only print if SCSIPI_DEBUG is defined.
2001-05-06 11:31:08 +00:00
bouyer 27155d9a6d Add an ATAPI front-end to the st driver. Completely untested for now,
but st at scsi should still work :)
2001-05-04 07:48:56 +00:00
bouyer 28d47d8db3 Use same type for first field of struct ata_atapi_attach and struct
scsipi_channel, so umass has better chances of working on big-endian systems.
2001-05-02 09:47:45 +00:00
lukem 85772a1cef remove some lint 2001-04-30 02:34:58 +00:00
tsutsui 862125c057 Don't forget to set XS_CTL_DATA_OUT (that was removed in previous). 2001-04-28 09:33:25 +00:00
thorpej 335ac52a5b Use simple tags for read and write, unless B_ORDERED is set, in
which case we use an ordered tag.
2001-04-28 04:11:31 +00:00
bouyer 74b15b27a2 Don't forget to call psw_done() ! 2001-04-27 21:36:58 +00:00
bouyer 937a7a3ed9 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
2001-04-25 17:53:04 +00:00
augustss e4cc721094 Correct the opcode for SCSI_MODE_SENSE_BIG. 2001-04-19 10:16:25 +00:00
jdolecek 372e5956ef Only install headers which are actually used by our userland. This
saves about 2.2MB under /usr/include/dev/. Discussed on tech-kern@
recently.

I HOPE to get the list right. The headers I left in are ones
used for MI tools and those whose usage I discovered by grep over tree sources.
Feel free to put needed includes back in if you encounter anything which
should not be removed from lists.
2001-04-11 07:42:31 +00:00
augustss 95af1455f2 The ZiO! MMC adapter doesn't have a flex geometry page. 2001-04-01 19:05:44 +00:00
augustss 2ff439c85c Add quirks for Panasonic MultiMediaCard adapter (attaches via USB). 2001-03-20 22:39:51 +00:00
augustss 93b623b541 Extend quirks to 32 bits. Add two new ATAPI quirks, one to
deal with a bad byte5 of the capacity descriptor, one to
handle devices that lack the flex geometry page.
2001-03-20 22:39:08 +00:00
explorer b12c43f70a Only lock the pack in if the disk device is a removable one. This fixes a
problem with Hitachi SCA drives
2001-03-09 16:07:39 +00:00
fvdl b72e6ca276 Add quirks for VMware emulated disks, for NetBSD as a guest OS. 2001-02-26 22:31:27 +00:00
lukem 3aeb5f2f29 whitespace police 2001-02-24 01:59:46 +00:00
pk 672f49bfa2 Turn off command tagging by default for pre-SCSI2 devices. 2001-02-16 22:54:27 +00:00
mycroft f2d987f8a4 Force certain commands (i.e. DVD authentication) to PIO mode. They are
explicitly not supported in DMA mode, and generally return an `illegal field
in CDB' error.
This should have been done ages ago.
2001-01-22 07:00:39 +00:00
kenh 4a962c6cd9 Retry requests if the CD-ROM drive returns the sense code "Device in
Process of Becoming Ready".
2001-01-19 22:47:46 +00:00
jdolecek 34c8ae80da constify 2001-01-18 20:28:15 +00:00
fvdl d040bd5908 Return error in the case of using ODIOCGDINFO or ODIOCGDEFLABEL when
the number of partitions is > OLDMAXPARTITIONS. This is better
than silently truncating the label (don't want to silently throw
away partitions when using an old disklabel binary on a label with
> 8 partitions). From Enami Tsugutomo.
2001-01-08 02:03:45 +00:00
fvdl e2d1c1f926 Adapt all disk devices in MI directories to handle ODIOC* calls
for ports that have bumped MAXPARTITIONS (and thus define
__HAVE_OLD_DISKLABEL).
2001-01-07 18:09:01 +00:00
augustss 5806434428 Call vdevgone() with correct minor range. 2001-01-01 18:34:12 +00:00
augustss 2f1e60b46c Support device detach.
Don't call scanjet_attach() for all HP scanners.
Also, ANSIfy while I'm here.
2001-01-01 18:28:49 +00:00
ad 2f5cf27275 PR 6402: some SCSI devices use \377 as blank, so adjust scsipi_strvis(). 2000-12-31 17:54:29 +00:00
thorpej b0c9cd5f7b ALTQ'ify. 2000-12-14 07:27:21 +00:00
augustss a48cc8927a Don't access (in core) disk label of a removable disk that is not there. 2000-12-08 02:30:51 +00:00
ad 9ecde86321 I2O HBAs provide an abstracted view of the bus; use SCBUSIOLLSCAN to give
them an oppertunity to re-scan it before we do.
2000-12-03 13:30:36 +00:00
wiz 972c941cf6 Fix typo in comment reported by Tetsuya Isaki in kern/11587. 2000-11-29 12:49:56 +00:00
chs f6b62f776c avoid division and remainder operations for devices where
the sector size is DEV_BSIZE (ie. practically everything).
2000-11-24 00:17:35 +00:00
soren a622a1b6d2 Remove obsolete comment. 2000-11-22 00:32:24 +00:00
thorpej b84f740be0 Move bpfattach()/bpfdetach() calls into ether_ifattach()/ether_ifdetach(). 2000-11-15 01:02:11 +00:00
pk fbf62501af Mark the "TOSHIBA, XM-4101TASUNSLCD" CD-R for a-sync operation only. 2000-11-14 08:52:35 +00:00
pk 8ba559d056 st_touch_tape(): Pass XS_CTL_SILENT to st_mode_select(). 2000-11-03 12:08:41 +00:00
pk 4c7351ec7d * st_touch_tape(): start probing at the block size from the sense data if
we have it.

* st_unmount(): reset density to the device default. This prevents using
  stale density values after changing to a medium with different density.

  Section 9.3.3 of the SCSI specs states that a device shall return the
  density value specified in the last succesfull MODE SELECT after an
  unload operation, in case it is not able to automatically determine
  the density of the new medium.
2000-11-03 10:46:18 +00:00
pk e3aaa6c1ab * Per st(4), retrieving status and setting modes on the control device
should succeed even if no media is loaded.

* In stopen(), check the return value of st_mount_tape().
2000-11-03 10:22:02 +00:00
pk f71476a62f Introduce ST_Q_ERASE_NOIMM, a quirk indicating that the device rejects
an ERASE command with the `Immed' bit on.

Use it on the VIPER 21247 & 21531.
2000-11-02 13:34:59 +00:00
pk e4958f1fe6 Prevent printing sense information twice. 2000-11-02 13:12:58 +00:00
pk 9c058471c3 Remove useless check for SDEV_MEDIA_LOADED from st_read_block_limits().
This command should work whether or not media is present in the device.
2000-11-02 00:56:59 +00:00
pk 3867a66a9a * In st_touch_tape(), don't bail out if the MODE SELECT fails since we are,
after all, probing the device for acceptable parameters.

* In st_loadquirks(), copy mode-specific quirks from the quirk table
  to `st_softc'; otherwise all such quirks save ST_Q_FORCE_BLKSIZE are ignored.
2000-11-02 00:52:15 +00:00
ad 5df1120c67 Add some more completion status codes. 2000-10-05 11:23:05 +00:00
thorpej 7ca3fb9ef0 Move the check for "promisc + unicast + not for us" into ether_input(),
and change Ethernet drivers to always pass all received frames to
ether_input() (with a few exceptions, which are documented in the
code).
2000-10-01 23:32:39 +00:00
ad 382141e2f7 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.
2000-09-22 16:45:17 +00:00
matt b0c9fcd14a Add a NOPREVENT quirk which prevents the sending of PREVENT messages (some
manual 9track tapes don't support it).  Add a quirk entry for the NCR H621
9track tape drive.
2000-08-16 19:22:25 +00:00
mjacob 927f61818e 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.
2000-08-13 00:03:01 +00:00
mjacob 9766fcf2be Don't attempt to actually read SAF-TE temperature objects- nobody seems
to be obeying the original spec as to what the numeric value means.

Temperature flags are unaffected- these are still the 'pseudo-thermometers'
and overtemp/undertemp warnings will be caught and translated to SES objects
here.
2000-08-08 22:55:30 +00:00
mjacob 295864adef During probe, use SCBUSACCEL ioctl to adapters that support it to
enable fast/wide/tagged.
2000-08-08 22:46:03 +00:00
bouyer 8464bde7e8 If the SET_FEATURE for piomode is rejected, fallback to mode 0 instead of
reporting an error.
This fixes the "piomode error (0x4)" problem with some ATAPI ZIP drives
reported on port-i386.
2000-08-03 23:14:31 +00:00
bouyer 1b00421876 Add quirk entry for NEDICOM CRD-BP2, from kern/10738. 2000-08-03 12:36:08 +00:00
sommerfeld ed9ce99d8c printf format paranoia 2000-07-08 17:12:08 +00:00
mjacob b47890a934 Reserve top nibble of status for use by the HBA. It's up to the
HBA to set or clear it.
2000-07-06 01:56:23 +00:00
thorpej cde72a2c2b Garbage-collect __BDEVSW_DUMP_OLD_TYPE. 2000-07-05 23:31:12 +00:00
mrg 261538ecac remove include of <vm/vm.h> 2000-06-28 16:39:25 +00:00
mrg 666116dd21 <vm/vm.h> -> <uvm/uvm_extern.h> 2000-06-28 16:38:37 +00:00
bouyer 12d3bf8c1a Add a callback (*irqack), for controllers that need special action to ack
the interrupt once it has been ack'd on the drive.
2000-06-12 21:10:40 +00:00
enami 5a4b9fcbbf 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.
2000-06-09 08:54:19 +00:00
soren cd4324537d Density codes are usually given in decimal, so print them that way. 2000-06-06 17:16:02 +00:00