freebsd-dev/sys/dev
Justin T. Gibbs dcc9985adf Fix a race condition in the flushing of commands that
have completed across the bus but not to the host before
processing of an exception condition (busfree, bus reset,
etc.).  When flushing the controller of completed commands,
we also look for packetized commands that have completed
with good status and are stored in the "good status fifo".
The hardware will post to the good status fifo even if
data for that command is still active in a FIFO.  In
one particular failure case, a command outstanding on the
bus reconnected, transferred data into a FIFO, and provided
good status while the host driver was processing an expected
busfree event (PPR message negotiation).  This resulted in
an entry in the good status fifo that we completed, but
since the sequencer was paused, the data in the data FIFO
for this command had never been transferred to the host.
Once the busfree processing was complete, the sequencer
was unpaused, and the data completed its transfer to the
host.  In some instances, the client for the data was notified
of the completion and attempted to view the data before
it arrived.  This case only occurred during FreeBSD's
multi-target probe of the SCSI bus while some devices are
negotiating to go packetized and some devices are already
running in packetized.

The fix is to run and FIFOs active with a context in the
good status fifo to completion before completing the command
to the SCSI layer.  This requies duplicating the FIFO rundown
operations in the host driver that would usually be handled
by the firmware, but there is no other alternative.

Don't blindly shutdown the SCB dma engine when restarting
the sequencer.  We may be killing an operation that is
not supposed to be cancelled.  The cases where we need to
shutdown these dma engines are already handled elsewhere in
the driver.

Fix a few more ahd_in?() -> ahd_in?_scbram() instances.
2003-06-28 04:46:54 +00:00
..
aac Fixing some glaring problems with aac_disk_dump(). 2003-06-19 01:49:04 +00:00
acpica Whitespace cleanups (verified with MD5 1832ce5ede6c58c844dfb53fd48f0eea). 2003-06-27 21:57:42 +00:00
adlink Almost the finished article. 2003-04-08 19:12:48 +00:00
advansys Merge common XPT_CALC_GEOMETRY functions into a single convenience function. 2003-06-14 22:17:41 +00:00
agp Sort the list of PCI ID's in numerical order and fix a whitespace bogon. 2003-06-27 18:17:06 +00:00
aha Bring back bus_dmasync_op_t. It is now a typedef to an int, though the 2003-05-27 04:59:59 +00:00
ahb Merge common XPT_CALC_GEOMETRY functions into a single convenience function. 2003-06-14 22:17:41 +00:00
aic Merge common XPT_CALC_GEOMETRY functions into a single convenience function. 2003-06-14 22:17:41 +00:00
aic7xxx Fix a race condition in the flushing of commands that 2003-06-28 04:46:54 +00:00
amd Merge common XPT_CALC_GEOMETRY functions into a single convenience function. 2003-06-14 22:17:41 +00:00
amr Merge common XPT_CALC_GEOMETRY functions into a single convenience function. 2003-06-14 22:17:41 +00:00
an Remove break after return. 2003-06-01 09:27:33 +00:00
ar Get rid of kvtop(). 2003-04-23 15:40:11 +00:00
asr Include <sys/ioccom.h> instead of <sys/disklabel.h> 2003-04-16 20:46:30 +00:00
ata Prevent probing the secondary channel on CMD646 controllers if the 2003-06-27 10:11:54 +00:00
ath Atheros 802.11 driver. Requires Atheros Hardware Access Lay (HAL). 2003-06-23 17:01:19 +00:00
atkbdc Use __FBSDID(). 2003-06-11 00:34:37 +00:00
awi Explicitly declare 'int' parameters. 2003-04-21 16:27:46 +00:00
bge Remove unused variable(s). 2003-05-31 20:42:24 +00:00
bktr Merge NetBSD bktr_core.c rev. 1.26: 2003-06-09 19:13:38 +00:00
buslogic Add /* FALLTHROUGH */ 2003-05-31 20:41:08 +00:00
cardbus Don't leak "barlist" allocation on failure. 2003-06-01 09:24:17 +00:00
ciss Give the correct size for the command map to busdma. 2003-06-26 04:01:34 +00:00
cm - Express hard dependencies on bus (pci, isa, pccard) and 2003-04-15 06:37:30 +00:00
cnw - Express hard dependencies on bus (pci, isa, pccard) and 2003-04-15 06:37:30 +00:00
cs - Express hard dependencies on bus (pci, isa, pccard) and 2003-04-15 06:37:30 +00:00
ct Force PnP devices to set SMIT mode. 2003-05-03 02:04:58 +00:00
cy Use __FBSDID(). 2003-06-11 06:34:30 +00:00
dc Add ADMtek ADM9511 and ADM9513 device ID's. 2003-06-08 10:11:55 +00:00
de Fix alignment requirements of tulip_rombuf by further increasing 2003-06-13 22:34:03 +00:00
dec
dgb Make TTYHOG tunable. 2003-03-05 08:16:29 +00:00
digi Make nokqfilter() return the correct return value. 2003-03-03 16:24:47 +00:00
dpt Merge common XPT_CALC_GEOMETRY functions into a single convenience function. 2003-06-14 22:17:41 +00:00
drm Do not define memset() to bzero(). We have a memset(). 2003-05-31 19:31:46 +00:00
ed - Express hard dependencies on bus (pci, isa, pccard) and 2003-04-15 06:37:30 +00:00
eisa Deprecate machine/limits.h in favor of new sys/limits.h. 2003-04-29 13:36:06 +00:00
em Add support for Quad port adapter 2003-06-05 17:51:38 +00:00
en Implement the ioctl that returns a list of currently open VCCs. 2003-06-13 13:50:38 +00:00
ep Other minor style nits I missed in ep_if_start() in my previous 2003-06-26 17:02:52 +00:00
ex - Declare ex_devclass in if_ex.c 2003-03-29 15:38:53 +00:00
exca MFP4: 2003-06-07 20:46:39 +00:00
fatm This is a driver for Fore PCA200E cards that uses busdma and works on 2003-06-23 14:46:12 +00:00
fb Low risk amd64 fix. Use a vm_offset_t for the virtual location of the 2003-05-23 05:10:49 +00:00
fdc Force media autodetection if the device has lost its parameter table. 2003-06-16 08:42:20 +00:00
fe Make sure that pp_name is non-null before setting the device 2003-04-10 04:36:02 +00:00
firewire - Use fwohci_poll() instead of fwohci_intr() to process the first bus reest. 2003-06-27 00:27:33 +00:00
fxp Drop locks before calling if_input() since it may re-enter fxp_start() 2003-06-23 23:23:49 +00:00
gem Miscellaneous fixes: 2003-05-15 16:57:55 +00:00
gfb - Add vm_paddr_t, a physical address type. This is required for systems 2003-03-25 00:07:06 +00:00
gx - Express hard dependencies on bus (pci, isa, pccard) and 2003-04-15 06:37:30 +00:00
hatm Style: __FBSDID(). 2003-06-18 09:31:37 +00:00
hea Explicitly declare 'int' parameters. 2003-04-21 16:27:46 +00:00
hfa - Don't call pci_enable_io() in drivers (unless needed for resume). 2003-04-16 03:16:57 +00:00
hifn Add support to eliminate a context switch per crypto op when using the 2003-06-27 20:07:10 +00:00
hme - Don't call pci_enable_io() in drivers (unless needed for resume). 2003-04-16 03:16:57 +00:00
ic - Clean up function calling conventions. 2003-03-28 06:27:08 +00:00
ichsmb typo. 2002-10-18 12:06:01 +00:00
ida Bring back bus_dmasync_op_t. It is now a typedef to an int, though the 2003-05-27 04:59:59 +00:00
idt - Deal with netisr changes. 2003-03-29 15:55:04 +00:00
ie - Move driver to newbus. 2003-03-29 13:36:41 +00:00
iicbus make iicbb_devclass and iicbb_driver globally visible. This will let 2003-06-19 02:50:08 +00:00
iir Import latest changes from the vendor. This also is reported to fix the 2003-04-25 05:37:04 +00:00
ips Fix pointer/int warnings so this compiles on amd64. The driver wants 2003-06-27 23:10:58 +00:00
isp Merge common XPT_CALC_GEOMETRY functions into a single convenience function. 2003-06-14 22:17:41 +00:00
ispfw Roll to latest level. 2003-02-16 01:30:31 +00:00
joy Gigacommit to improve device-driver source compatibility between 2003-03-03 12:15:54 +00:00
kbd AMD64 physical space is much larger than i386, de-i386 the bus_space and 2003-05-12 02:44:37 +00:00
lge - Don't call pci_enable_io() in drivers (unless needed for resume). 2003-04-16 03:16:57 +00:00
lmc Back out M_* changes, per decision of the TRB. 2003-02-19 05:47:46 +00:00
lnc - Express hard dependencies on bus (pci, isa, pccard) and 2003-04-15 06:37:30 +00:00
matcd Re-introduction of the matcd CD driver. 2003-06-17 01:20:03 +00:00
mc146818
mca Deprecate machine/limits.h in favor of new sys/limits.h. 2003-04-29 13:36:06 +00:00
mcd Fix \ alignment in macro. 2003-05-31 18:21:40 +00:00
md Remove 256 unit limit, there is no evil minor number encoding to 2003-06-22 11:31:38 +00:00
mii Fix bge at 10Mbit. The defines for 10-Half and 10-Full were swapped. 2003-06-17 15:02:28 +00:00
mk48txx Add a driver back end for the Mostek MK48T02, MK48T08 and MK48T59 2002-04-04 23:44:42 +00:00
mlx Use bioq_flush() to drain a bio queue with a specific error code. 2003-04-01 15:06:26 +00:00
mly Centralize the devstat handling for all GEOM disk device drivers 2003-03-08 08:01:31 +00:00
mpt Merge common XPT_CALC_GEOMETRY functions into a single convenience function. 2003-06-14 22:17:41 +00:00
mse Use __FBSDID(). 2003-06-02 16:32:55 +00:00
musycc Remove unused variable(s). 2003-05-31 20:39:28 +00:00
my - Express hard dependencies on bus (pci, isa, pccard) and 2003-04-15 06:37:30 +00:00
ncv Make sure that pp_name is non-null before setting the device 2003-04-10 04:36:02 +00:00
nge - Don't call pci_enable_io() in drivers (unless needed for resume). 2003-04-16 03:16:57 +00:00
nmdm Make TTYHOG tunable. 2003-03-05 08:16:29 +00:00
nsp o Changes to support NEWCARD. 2002-11-28 01:09:29 +00:00
null /dev/null and /dev/zero does not need Giant 2003-06-24 19:50:48 +00:00
ofw Add a solaris compatible ofw interface for third party software that 2003-06-19 01:40:11 +00:00
pccard Sync to 1.53 2003-06-17 12:29:49 +00:00
pccbb Unlock after ISR. 2003-06-12 06:06:14 +00:00
pcf fix another LP64 problem. READ_IVAR takes a pointer to an uintptr_t, not 2003-06-20 07:22:54 +00:00
pci prevent the number of patterns from exceeding the number of pci devices. 2003-06-23 03:17:03 +00:00
pcic More low-hanging fruit: kill caddr_t in calls to wakeup(9) / [mt]sleep(9). 2003-03-02 16:54:40 +00:00
pdq - Don't call pci_enable_io() in drivers (unless needed for resume). 2003-04-16 03:16:57 +00:00
ppbus Fix a printf warning from the recent CAM changes. 2003-05-01 19:46:21 +00:00
ppc Use __FBSDID(). 2003-06-11 00:34:37 +00:00
pst Pull the pst driver out from under GAINT. 2003-04-28 08:10:27 +00:00
puc add support for NetMos 4S0P PCI: 4S, 0P 2003-05-14 09:37:46 +00:00
raidframe Deprecate machine/limits.h in favor of new sys/limits.h. 2003-04-29 13:36:06 +00:00
random Gigacommit to improve device-driver source compatibility between 2003-03-03 12:15:54 +00:00
ray Deprecate machine/limits.h in favor of new sys/limits.h. 2003-04-29 13:36:06 +00:00
rc Make TTYHOG tunable. 2003-03-05 08:16:29 +00:00
rndtest o correct mib spelling: reset -> retest 2003-06-25 14:46:01 +00:00
rp Gigacommit to improve device-driver source compatibility between 2003-03-03 12:15:54 +00:00
sab Match "serial" as well as "se". 2003-03-31 18:21:52 +00:00
sbni - Express hard dependencies on bus (pci, isa, pccard) and 2003-04-15 06:37:30 +00:00
sbsh cosmetic style fixes 2003-04-15 17:26:28 +00:00
scd Don't include <sys/disklabel.h> 2003-04-16 20:57:35 +00:00
sf Remove break after return 2003-05-31 19:59:29 +00:00
si Make TTYHOG tunable. 2003-03-05 08:16:29 +00:00
sio Track the resource id of the memory port instead of just assuming that 2003-06-09 21:25:14 +00:00
sk Remove unused variables. 2003-05-31 19:58:45 +00:00
smbus Gigacommit to improve device-driver source compatibility between 2003-03-03 12:15:54 +00:00
sn - Express hard dependencies on bus (pci, isa, pccard) and 2003-04-15 06:37:30 +00:00
snc Remove unused #ifdef BRIDGE. 2003-06-02 08:36:18 +00:00
snp Gigacommit to improve device-driver source compatibility between 2003-03-03 12:15:54 +00:00
sound Set a lower bound on fragment size rather than returning a failure 2003-06-26 13:13:18 +00:00
speaker Use __FBSDID(). 2003-06-02 16:32:55 +00:00
sr Use bus_space*() instead of in*() and out*(). 2003-04-23 20:22:32 +00:00
stg Make sure that pp_name is non-null before setting the device 2003-04-10 04:36:02 +00:00
streams Initialize struct fileops with C99 sparse initialization. 2003-06-18 18:16:40 +00:00
sym Add amd64 support. 2003-06-26 01:10:24 +00:00
syscons Use SC_NO_CUTPASTE to protect cutpaste variables correctly, fixing the 2003-06-01 04:42:14 +00:00
tdfx Remove extra ';' 2003-05-31 18:57:41 +00:00
tga Gigacommit to improve device-driver source compatibility between 2003-03-03 12:15:54 +00:00
ti Remove code that tries to detect if the MCLSHIFT and MSIZE macros 2003-06-13 20:46:34 +00:00
trm Fix some style bugs. 2003-06-25 13:33:41 +00:00
twe Use bioq_flush() to drain a bio queue with a specific error code. 2003-04-01 15:06:26 +00:00
tx Convert the tx(4) driver to use the busdma API. 2003-04-20 18:08:00 +00:00
txp - Don't call pci_enable_io() in drivers (unless needed for resume). 2003-04-16 03:16:57 +00:00
ubsec Add support to eliminate a context switch per crypto op when using the 2003-06-27 20:07:10 +00:00
usb Regen. 2003-06-25 22:56:13 +00:00
utopia This is a driver for the physical layer chips used in ATM interfaces. 2003-06-12 14:28:32 +00:00
vinum Check compatibility partitions on all archs. This makes vinum 2003-06-23 14:49:57 +00:00
vr Use newly minted device_is_attached rather than device_is_alive to see 2003-04-21 18:34:04 +00:00
vx Revert part of rev 1.43. We want to fail gracefully if there is no packet 2003-06-08 18:35:25 +00:00
wds Don't include <sys/disklabel.h> 2003-04-16 20:57:35 +00:00
wi Return support needed by dstumbler: 2003-06-27 00:49:04 +00:00
wl Get wlread() closer to working. Use m->m_len as the initial value for 2003-04-17 17:51:24 +00:00
xe Remove unused variable(s). 2003-05-31 20:27:42 +00:00
zs Note that MAJOR_AUTO is now the default if d_maj is not initialized. This 2003-03-09 11:03:45 +00:00