freebsd kernel with SKQ
Go to file
David Greenman 57cb71573d Fixes to the aic7xxx sequencer code and device driver from Justin Gibbs:
1) If a target initiated a sync negotiation with us and happened to chose a
value above 15, the old code inadvertantly truncated it with an "& 0x0f".
If the periferal picked something really bad like 0x32, you'd end up with
an offset of 2 which would hang the drive since it didn't expect to ever
get something so low.  We now do a MIN(maxoffset, given_offset).

2) In the case of Wide cards, we were turning on sync transfers after a
sucessfull wide negotiation.  Now we leave the offset alone in the per
target scratch space (which implies asyncronous transfers since we initialize
it that way) until a syncronous negotation occurs.

3) We were advertizing a max offset of 15 instead of 8 for wide devices.

4) If the upper level SCSI code sent down a "SCSI_RESET", it would hang the
system because we would end up sending a null command to the sequencer.  Now
we handle SCSI_RESET correctly by having the sequencer interrupt us when it
is about to fill the message buffer so that we can fill it in ourselves.
The sequencer will also "simulate" a command complete for these "message only"
SCBs so that the kernel driver can finish up properly.  The cdplay utility
will send a "SCSI_REST" to the cdplayer if you use the reset command.

5) The code that handles SCSIINTs was broken in that if more than one type
of error was true at once, we'd do outbs without the card being paused.
The else clause after the busfree case was also an accident waiting to
happen.  I've now turned this into an if, else if, else type of thing, since
in most cases when we handle one type of error, it should be okay to ignore
the rest (ie if we have a SELTO, who cares if there was a parity error on
the transaction?), but the section should really be rewritten after 2.0.5.
This fix was the least obtrusive way to patch the problem.

6) Only tag either SDTR or WDTR negotiation on an SCB.  The real problem is
that I don't account for the case when an SCB that is tagged to do a particular
type of negotiation completes or SELTOs (selection timeout) without the
negotiation taking place, so the accounting of sdtrpending and wdtrpending
gets screwed up.  In the wide case, if we tag it to do both wdtr and sdtr,
it only performs wdtr (since wdtr must occur first and we spread out the
negotiation over two commands) so we always have sdtrpending set for that
target and we never do a real SDTR.  I fill properly fix the accounting
after 2.0.5 goes out the door, but this works (as confirmed by Dan) on
wide targets.

Other stuff that is also included:

1) Don't do a bzero when recycling SCBs.  The only thing that must explicitly
be set to zero is the scb control byte which is done in ahc_get_scb.  We also
need to set the SG_list_pointer and SG_list_count to 0 for commands that do
not transfer data.

2) Mask the interrupt type printout for the aic7870 case.  The bit we were
using to determine interrupt type is only valid for the aic7770.


Submitted by:	Justin Gibbs
1995-05-17 07:06:02 +00:00
bin Describe -m option 1995-05-06 13:52:29 +00:00
eBones Make certain that random keys havethe correct parity, for interoperation with 1995-05-09 18:05:15 +00:00
etc Reviewed by: bde, jkh 1995-05-17 04:46:57 +00:00
games Fix nested comments for -Wcomment warnings. 1995-05-09 13:33:06 +00:00
gnu Make error message for no input files specified consistent across all 1995-05-17 01:03:56 +00:00
include Add prototype for ypbinderr_string(). 1995-04-21 18:07:34 +00:00
lib Fixed the calculation of the reserved space for bad144. Thanks Rod! 1995-05-15 19:03:08 +00:00
libexec Speed up ftpd and make it more efficient: 1995-05-03 16:58:12 +00:00
lkm Changed relase number in snake_saver.c from 2.1 to 2.0.5 1995-05-16 19:10:11 +00:00
release Oops - Jordan managed to grab my ``work in progress file'' which 1995-05-16 20:00:51 +00:00
sbin Fixed incompleteness that would allow dirty filesystems to get mounted 1995-05-15 08:39:37 +00:00
secure Argh! Another instance of DES rather than des that I forgot. Truly, 1995-05-11 22:07:49 +00:00
share Add Peter Dufault <dufault@hda.com> 1995-05-17 02:01:00 +00:00
sys Fixes to the aic7xxx sequencer code and device driver from Justin Gibbs: 1995-05-17 07:06:02 +00:00
tools/regression/usr.bin/sed BSD 4.4 Lite Usr.bin Sources 1994-05-27 12:33:43 +00:00
usr.bin If an ut_host field in an utmp entry contains a ':' (e.g. for an xterm session) 1995-05-16 11:29:41 +00:00
usr.sbin Oops - Jordan managed to grab my ``work in progress file'' which 1995-05-16 20:00:51 +00:00
COPYRIGHT This is the official 4.4 Lite copyright. 1994-09-11 07:53:28 +00:00
CVS-INFO Documented the new CVS template. This really isn't the right place for it, 1994-07-24 22:27:27 +00:00
HW.TROUBLE Added the first three entries. Changed the intro a bit. 1994-08-28 20:48:37 +00:00
Makefile Submitted by: jkh 1995-05-13 03:34:23 +00:00
README Small tweak - I said that ESC-ESC aborted the install. It actually only 1994-11-10 04:28:15 +00:00
TODO Removed the ps through a pipe project since we decided this was 1995-04-23 21:34:23 +00:00

   -----------------------------------------
       FreeBSD 2.0  ---  ALPHA Release                 ,        ,
   -----------------------------------------          /(        )`
                                                      \ \___   / |
Welcome to the ALPHA release of FreeBSD 2.0 - the     /- _  `-/  '
first public snapshot of our new 4.4BSD Lite based   (/\/ \ \   /\
operating system environment.  This install proce-   / /   | `    \
dure is also at the ALPHA stage, and contains only   O O   ) /    |
the minimum functionality required by an             `-^--'`<     '
*EXPERIENCED* person to install the system.         (_.)  _  )   /
It is our hope, of course, that the feedback         `.___/`    /
provided from this snapshot will                       `-----' /
greatly assist us in making the release   <----.     __ / __   \
of 2.0 much more user friendly.  Your     <----|====O)))==) \) /====
comments and criticisms are very          <----'    `--' `.__,' \
valuable to us, so please don't hesitate               |        |
in contacting us!  Full details on where and            \       /	/\
how to provide feedback are given below.           ______( (_  / \______/
                                                 ,'  ,-----'   |
This install procedure is ALPHA code, and        `--{__________)
may very possibly *DESTROY* the contents of your
ENTIRE DISK!  Please do not proceed with this installation
unless you've adequately backed up your data first!

If any errors occur during this installation, you can see them
by toggling over to the alternate screen - type ALT-F2 to switch
over, ALT-F1 to switch back to the install screen.  The debugging
output on the second screen may be very valuable to us in understanding
your bug report, so please be sure to take note of it when reporting
any failures in the installation!  Thanks!

Menus and scrolling output windows may be traversed with the arrow
and Page Up/Page Down keys.  To suspend the installation at any point,
hit ESC twice.  Hitting TAB will move the focus to different controls.
If you've ever dealt with a DOS installation, you'll know how to deal
with this.

For a more complete description of what's new in this release, please
see the release notes.

For more documentation on this system, it is recommended that you purchase
the 4.4BSD Document Set from O'Reilly Associates and the USENIX Association.
ISBN 1-56592-082-1  We have no connection with O'Reilly, we're just
satisfied customers!

Have fun, and please let us know of any problems you encounter with
this release!

Comments should be sent to:

	hackers@FreeBSD.org

Bug reports should be sent using the `send-pr' utility, if you
were able to get the system installed, otherwise to:

	bugs@FreeBSD.org

And general questions to:

	questions@FreeBSD.org


Please have patience if your questions are not answered right away -
this is an especially busy time for us, and our volunteer resources
are often strained to the limit (if not somewhat past!).

Thanks!

				The FreeBSD Project