freebsd-dev/sys/dev
Justin T. Gibbs c28447da4c Restructure the arbitration loop to allow for reselections that win out over
the adapter's selections.  Many fast periferals were getting upset when
the sequencer decided to rearbitrate after the device had already won
arbitration.  This also forced the creation of a list threaded through
the SCBs (since we don't have enough space anywhere else) of commands that
are awaiting reselection.  This list is run down before any new transactions
from the input queue are allowed.  The list is appened to whenever we begin
a selection (simple case since the selecting device is always at the head)
and by the kernel driver whenever a request sense occurs.  In the common
case, the list is only one element long, but when a reselection wins out
over a selection and that reselection generates a request sense, the
outstanding selection required for the retreval of the sense code grows
the list.  On machines with many targets, this might cause the list to grow
large, so this solution, which will allow up to the maximum number of I/O
requests capible of the card elements in the list, was chosen.  The list
manipulation is trivial and adds three sequencer instructions of overhead
to the selection phase.

This fixes the "target busy" errors from micropolis drives and the bursty
I/O problem when performing I/O between a Quantum Grand Prix and any other
device.  I anticipate that this will correct many of the problems that
have been reported with this driver.

Reviewed by: Wcarchive and David Greenman
1995-04-27 17:44:27 +00:00
..
aic7xxx Restructure the arbitration loop to allow for reselections that win out over 1995-04-27 17:44:27 +00:00
cy CVS: 1995-03-28 12:29:11 +00:00
de Matt says that no pre-2.3 pass boards were supposed to ship, but I certainly 1995-04-18 12:54:30 +00:00
ed Add a class field to devconf and mst drivers. 1995-04-12 20:48:13 +00:00
eisa files for the eisa specific autoconfiguration.. 1995-04-23 08:55:43 +00:00
ep Add a class field to devconf and mst drivers. 1995-04-12 20:48:13 +00:00
fdc Reviewed by: no-one yet, but non-intrusive 1995-04-20 03:18:19 +00:00
fe Added `fe' device drive r for Fujitsu MB86960A family. 1995-04-23 18:31:50 +00:00
ic Add the Cyclades serial driver code (ALPHA) from Andrew Werple and 1995-02-09 09:47:31 +00:00
ie Add a class field to devconf and mst drivers. 1995-04-12 20:48:13 +00:00
joy Add and move declarations to fix all of the warnings from `gcc -Wimplicit' 1995-03-28 07:58:53 +00:00
kbd Change fkey 63 from ^[[K to ^[[~. 1995-03-28 21:30:13 +00:00
lnc Add a class field to devconf and mst drivers. 1995-04-12 20:48:13 +00:00
mcd Add a class field to devconf and mst drivers. 1995-04-12 20:48:13 +00:00
mse Add a class field to devconf and mst drivers. 1995-04-12 20:48:13 +00:00
pci Forward-declare kern_devconf for use in a prototype. Some drivers 1995-03-25 21:10:38 +00:00
ppbus Added $Id$ 1994-08-02 07:55:43 +00:00
scd Add a class field to devconf and mst drivers. 1995-04-12 20:48:13 +00:00
sio Move declarations of console functions to cons.h (they should be 1995-04-23 12:41:57 +00:00
snp same 1995-02-27 19:47:53 +00:00
speaker Add and move declarations to fix all of the warnings from `gcc -Wimplicit' 1995-03-16 18:17:34 +00:00
syscons Added mark_all() call so that screen is proberly updated 1995-04-25 10:22:28 +00:00
vn Escentially a rewrite by John Dyson. This is disgusting, and John agrees, 1995-04-19 10:31:18 +00:00