Commit Graph

64 Commits

Author SHA1 Message Date
simonb 6555a67971 Catch up with (2 month old!) changes to dev/scsipi/scsi_all.h so pmax MD
SCSI kernels work.
2001-07-07 07:52:02 +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
mhitch 61ec2107d7 Clear lun field in ScsiCmd (SII driver change to work with MI SCSI). 2000-06-02 20:15:40 +00:00
thorpej 21fc65e1a8 sleep() -> tsleep() 2000-05-27 04:52:27 +00:00
thorpej 071aed40ac A foolish consistency; most parts of the kernel use bp->b_data, so
change these from bp->b_un.b_addr to bp->b_data, as well.  This also
allows us more flexibility to experiment with other data buffer types
hung off of struct buf.
2000-05-19 18:54:22 +00:00
simonb bf851ea6cb Nuke register. 2000-03-30 14:45:04 +00:00
thorpej 7b918b4088 New callout mechanism with two major improvements over the old
timeout()/untimeout() API:
- Clients supply callout handle storage, thus eliminating problems of
  resource allocation.
- Insertion and removal of callouts is constant time, important as
  this facility is used quite a lot in the kernel.

The old timeout()/untimeout() API has been removed from the kernel.
2000-03-23 06:40:33 +00:00
mhitch 40b13c16c0 Do the Ultrix label check in readdisklabel() instead of in rz.c. Ultrix
disks are now usable with the MI SCSI sd devices.
The install mini-root adjustment and the default partitioning still needs
to be moved into readdisklabel().
2000-03-03 17:51:26 +00:00
thorpej fe551f0e64 Fix a bug in disksort_*() which caused non-optimal ordering when multiple
active partitions were on a single spindle.  Add a b_rawblkno member to
struct buf which contains the non-partition-relative block number to sort
by.
2000-02-07 20:16:47 +00:00
thorpej 52242fdf9f Update for sys/buf.h/disksort_*() changes. 2000-01-21 23:28:59 +00:00
simonb ede7778a1c Remove unneeded include files (up to 16 in two files!). 2000-01-10 03:24:31 +00:00
simonb 636b65bec8 The clean-up continues:
- Make local-only function and variables static.
 - Move function prototypes and extern variable declarations to
   header files.
 - Delete unused variables.
There's still a handful of extern declaraions that should be fixed up.
2000-01-09 03:55:28 +00:00
simonb ee075b7de7 Function prototype cleanup. 2000-01-08 01:02:35 +00:00
simonb b48a6bbd79 Allow the "install diskimag" label to be any size < 16MB, not just 4MB. 1999-12-06 02:53:50 +00:00
simonb 71cc75d706 Don't check for a write to write protected label if we are writing to
the raw partition.
1999-11-28 06:28:37 +00:00
simonb fcab0ccebb Tidy up the formatting of a comment. 1999-11-28 06:06:21 +00:00
simonb 682b4e3665 Include SCSI version of disk in device display. 1999-11-19 03:14:22 +00:00
thorpej 11cae42531 Centralize the declaration and clearing of `cold'. 1999-09-17 19:59:35 +00:00
simonb dc1d3940db Nuke register and remove trailling white space. 1999-04-24 08:01:01 +00:00
simonb be4160066d Allow the fake installation diskimage to be 2MB as well as 32MB in size. 1999-04-08 13:55:37 +00:00
mrg 3ca216fd8a fix NRND usage 1999-03-09 00:37:01 +00:00
explorer 3ebb419571 Update to slightly altered rnd_attach_source() api 1999-02-28 17:08:05 +00:00
simonb 384f5d9970 Remove unused pmax/stand/dec_*.h include files. 1999-01-27 03:03:51 +00:00
mhitch 475a5c2afd RZ25 disks seem to need a short delay after a start command; the test unit
ready right afterward succeeds, but the getsize following that failed with
a "not ready".
1998-11-20 06:24:02 +00:00
mhitch a7f70a5fbc Fix problem when using non-DEC CDROMS with blocksize other than 512 bytes.
This got lost when disk geometry processing was updated.

Also move the CDROM check from rzread() to rzwrite() - it doesn't make
much sense to report a read-only filesystem error when trying to read a
CDROM.
1998-11-06 01:59:25 +00:00
thorpej 21592147a1 defopt COMPAT_ULTRIX 1998-06-25 23:27:56 +00:00
simonb 469658d533 - Allow all valid SCSI id's to work on the SII and first two ASC
controllers (including SCSI id 7 on the 2100/3100).
- On the pmax (2100,3100) set the host SCSI id to 6.
- Move disk and tape config for the second ASC controller from the GENERIC
  config file to scsi.pmax so all configurations can use the second
  controller.
1998-05-08 00:05:19 +00:00
thorpej f02b1a7a33 Make this compile again in light of Lite2 merge. (Yuck.) 1998-03-02 23:17:19 +00:00
thorpej a3a297cc40 Two purely cosmetic whitespace changes. 1998-02-23 18:45:44 +00:00
jonathan f7bd3a0119 Move existing contextsw-avoidance code in rzdump() earlier, since rzready()
also calls biowait().

Some drives seek to modepage on every modepage geometry-sense in rzready()
cache dev_t of last readied device in rzdump() to elide rzready() calls.
2x speedup of dumps on rz25 and 20x-30x speedup on some IBM OEM 4gig drives.
1998-02-21 20:20:55 +00:00
thorpej 50f58080f4 Rewrite rzdump(); the previous one was completely broken. 1998-02-19 23:04:41 +00:00
mhitch 7984f5ce3a The scsi command length was not being set in rz_command(), which caused
the SII driver to fail when trying to get the drive geometry.
Remove extraneous newline when printing out the disk geometry during device
probes.
1997-11-13 03:56:49 +00:00
jonathan c176a3646e Fix kernel divide-by-zero errors and other bugs with removable devices:
* Add code to query CDs for size, from MI scsi cd.c. Use it on CDs.
  * Set C partition size for CDs. 4.4bsd/pmax code only set `a' partition
    size and required users to mount `a' partition, breking raw-device
    access like "disklabel rz?".
  * Avoid possible divide-by-zero call to howmany() from rzstart(),
    on removable media that aren't ready at device-open time.

Verified to work on rrz42.
1997-11-09 03:08:23 +00:00
jonathan 1dfe80f178 Add MODE SENSE code from MI scsi sd.c to rz.c.
* add includes for sys/dev/scsipi headers.
 * cut-and-paste mode_sense and disk-geometry sense code from sd.c,
   with name changes sd -> rz.
 * Write `rz_command()' to send SCSI sense commands based on
   existing rz size-sensing code.
 * get geometry info with page 4 and page 5 mode sense.
 * use resulting geom info for default label, fake label, and when
   using ultrix labels. (ultrix labels have no geometry info).

Fixes incrrect-label bugs with using sysinst to install onto
Ultrix-labelled disks.
1997-11-08 11:28:10 +00:00
jonathan 2025270865 Fixes for sysinst and installing diskimage:
* Check for a disklabel matching the known values in an install diskimage.
   If found, update incore disklabel's RAW_PART  with the size reported
   by the disk, clobbering the size used by vnd(4).*
 * If geometry info is bogus or /missing, supply a fake geometry
   (as in sd.c).  Saves readdisklabel() and sysinst from divide-by-zero errors.
 * lint: RAWPART -> RAW_PART.
1997-10-26 10:47:14 +00:00
jonathan 75e6c24f72 Don't turn off RZF_WLABEL flag on last close of raw partition.
It breaks disklabel -W, turning label writes back off again when
disklabel -W closes its open fd on the raw disk.
1997-10-25 22:28:52 +00:00
mhitch 748703e737 Correct the check for a recovered error (I did it wrong the first time). 1997-08-17 16:51:21 +00:00
jonathan 11bfae37bb Update compiled-in default partition. Default root 32Mbytes, swap 64Mbytes.
(appropriate for ELF and growth in / since 4.4bsd/pmax).
Clip default-label partitions against the end of the disk to make installs
easier.
1997-06-25 11:00:32 +00:00
pk 6b976a7d46 rzsize(): call rzopen()/rzclose() if not yet open, per the
current `openmask'.
1997-06-18 22:19:13 +00:00
jonathan 3d2676b809 Garbage-collect '#include <machine/pte.h>'. 1997-06-16 23:52:06 +00:00
mhitch 4ccdbb1c9e Don't return error status on recoverable errors 1997-06-15 17:17:07 +00:00
thorpej 9fc5d41bb3 Garbage-collect an ... insane use of "GENERIC" (used to generate a
different "default in-core disklabel" with a larger b partition in
the event no disklabel was present on the disk).
1997-02-04 05:24:55 +00:00
thorpej 08dafb1339 Add a sick little hack to glue old-config-pmax-scsi-stuff into the
alldevs list.  This is required for the new machine-independent setroot().
1997-01-31 02:00:56 +00:00
jonathan 11a7f97c20 Use <> not "" #include path for pmax/stand/dec_boot.h. 1997-01-15 00:52:17 +00:00
christos d286889901 backout previous kprintf change 1996-10-13 03:39:27 +00:00
christos 19d8368f2f printf -> kprintf, sprintf -> ksprintf 1996-10-11 00:44:42 +00:00
jonathan 3a51c3ecb0 Move old 4.4bsd/pmax driver declaration below prototypes of driver
entry points, for -Wall -Wstrict-prototypes.
1996-09-21 08:47:17 +00:00
thorpej eeaf8d15ef Remove the old-style disk instrumentation code. 1996-07-12 21:55:48 +00:00
mhitch 2c4f6b4b82 Don't modify rz_softc[] entries beyond what was configured.
Show proper inquiry data when version >= 1, not <= 1 (SCSI-2 devices
now display their inquiry infor).
Correct transfer length passed to dk_unbusy (b_resid hasn't been
updated yet).
1996-06-16 16:57:31 +00:00
jonathan 39917746c1 fixes for -Wall -Wmissing-prototypes:
Update the pmax SCSI drivers (rz and tz) to  use <machine/conf.h>.
    Fix the driver entry points to have the correct signatures -- add
    "ioflag" args to read() and write(), add "struct proc *p" arg to
     open and close.
    Stop using __BDEVSW_DUMP_OLD_TYPE, and update the rzdump and tzdump
    entry points to have the correct, MI signatures.

    NB: this is just syntactic sugar: both the caller and the dump entry
    points ignore the additional args, and do exactly what they did before.
    This must be fixed before using dump entry points in non-pmax drivers
    (e.g., the MI scsi code).
1996-04-10 16:33:44 +00:00