freebsd-dev/sys/dev
Bruce Evans 5c1a1eae83 Fixed error handling:
- Call isa_dmadone() whenever necessary to stop DMA and/or free bounce
  buffers.  Undead DMA corrupted the malloc freelist fairly consistently
  in the following configuration: SLICE kernel, 2 floppy drives, no disk
  in fd0, disk in fd1.
- Don't call fdc_reset() from fd_timeout().  Doing so gave an "extra"
  interrupt which was usually misinterpreted as being for completion
  of the next FDC command; the interrupt for completion of the next
  FDC command was then usually misinterpreted...  There were further
  complications for interrupts latched by the soft-spl mechanism so
  that they were delivered after all the h/w interrupts went away.
  This caused at least wrong head settle delays and may be why the
  FreeBSD floppy driver seems to munch floppies more than most floppy
  drivers.  The reset was unnecessary anyway in cases that didn't have
  the bug described next, since is was repeated a little later for
  the IOTIMEDOUT state.  The state machine has complications to handle
  resets correctly, so just use it.
- Don't call retrier() from fd_timeout().  The IOTIMEDOUT state needs
  to be processed next, and it isn't valid to set to that state if
  retrier() has aborted the current transfer.  Doing so caused null
  pointer panics after the previous bug was fixed.

Improved error handling:
- If an i/o is aborted, arrange to reset in the state machine before
  doing the next i/o.  New fdc flag for this.  This fixes spurious
  warnings and lengthy busy-waiting for the next i/o.
- Split STARTRECAL into RESETCOMPLETE and STARTRECAL and only check
  for the results from reset if we actually reset.  This fixes spurious
  warnings for other paths to STARTRECAL.  [Oops, it may break reset
  handling for motor-off resets.]

Cleanups in fd_timeout():
- Renamed to fd_iotimeout() to make it clearer that it is only used
  for i/o.
- Don't handle the bp == 0 case.  This case can't happen for i/o.
- Don't check for controller-busy.  We know it must be.
- Don't print anything.  retrier() already prints too much for normal
  errors.
- Fudge the state differently so that the state machine advances
  fdc->retry and the status is invalid (perhaps this should fudge a
  valid state like the one for WP).
- Style fixes.
1998-07-29 13:00:42 +00:00
..
advansys Back out part 1 of the MCFH that changed $Id$ to $FreeBSD$. We are not 1997-02-22 09:48:43 +00:00
aic7xxx Some revisions of the aic7880 have a problem where, if the 1998-06-28 02:58:57 +00:00
ar Removed unused includes. 1998-06-21 14:53:44 +00:00
bktr Add support for the AVer Media range of cards. 1998-07-14 21:19:58 +00:00
ccd There is no such thing any more as "struct bdevsw". 1998-07-04 22:30:26 +00:00
cs Add the 'cs' driver for Crystal Semiconductor CS89x0 devices. This 1998-07-20 20:00:43 +00:00
cy Changed %n to %r in devfs name format strings. %n has almost gone away. 1998-07-15 12:18:34 +00:00
de Cast pointers to uintptr_t/intptr_t instead of to u_long/long, 1998-07-15 02:32:35 +00:00
dec [Add missing files from previous commit] 1998-06-14 13:53:12 +00:00
dgb This commit fixes various 64bit portability problems required for 1998-06-07 17:13:14 +00:00
dpt Fixed printf format errors (only 1 left in GENERIC now). 1998-07-13 09:53:11 +00:00
ed Removed unused includes. 1998-06-21 18:02:50 +00:00
eisa Fix list corruption and memory leak that could occur when 1998-05-14 19:47:38 +00:00
en update ATM driver. (base version: midway.c 1.67 --> 1.68) 1998-07-29 05:35:16 +00:00
ep Removed unused includes. 1998-06-21 18:02:50 +00:00
ex This commit fixes various 64bit portability problems required for 1998-06-07 17:13:14 +00:00
fdc Fixed error handling: 1998-07-29 13:00:42 +00:00
fe Removed unused includes. 1998-06-21 16:51:06 +00:00
fxp Fixed pedantic semantics errors (bitfields not of type int, signed int 1998-06-08 09:47:47 +00:00
ic Support compiling with `gcc -ansi'. 1998-04-15 17:47:40 +00:00
ie Fixed printf format errors (only 1 left in GENERIC now). 1998-07-13 09:53:11 +00:00
isp minphys means something different in FreeBSD than in NetBSD- not needed here and in the way 1998-07-25 04:48:25 +00:00
joy This commit fixes various 64bit portability problems required for 1998-06-07 17:13:14 +00:00
kbd keymap -> key_map so that the kernel will compile with 1998-06-06 17:45:11 +00:00
lnc Add support for PCNet PCI chips that only work when we talk to them as ISA 1998-07-20 17:33:01 +00:00
mc146818 Major changes to the generic device framework for FreeBSD/alpha: 1998-06-14 13:46:10 +00:00
mcd Fixed printf format errors (only 1 left in GENERIC now). 1998-07-13 09:53:11 +00:00
mse This commit fixes various 64bit portability problems required for 1998-06-07 17:13:14 +00:00
pci Add a call to a platform-specific irq remapping function for alpha platforms 1998-07-22 08:40:46 +00:00
pcm/isa Renambed sbintr to sb_intr to avoid a conflict with the (now 1998-06-17 16:59:30 +00:00
pdq This commit fixes various 64bit portability problems required for 1998-06-07 17:13:14 +00:00
ppbus Removed unused includes. 1998-06-21 18:02:50 +00:00
ppc Seventy-odd "its" / "it's" typos in comments fixed as per kern/6108. 1998-04-17 22:37:19 +00:00
rc This commit fixes various 64bit portability problems required for 1998-06-07 17:13:14 +00:00
rp Changed %n to %r in devfs name format strings. %n has almost gone away. 1998-07-15 12:18:34 +00:00
scd Fixed printf format errors (only 1 left in GENERIC now). 1998-07-13 09:53:11 +00:00
si Add a macro tweak. 1998-06-13 19:36:22 +00:00
sio Changed %n to %r in devfs name format strings. %n has almost gone away. 1998-07-15 12:18:34 +00:00
slice Don't return an error if the magic number is not present. 1998-07-22 19:37:02 +00:00
snp This commit fixes various 64bit portability problems required for 1998-06-07 17:13:14 +00:00
sound/isa Renambed sbintr to sb_intr to avoid a conflict with the (now 1998-06-17 16:59:30 +00:00
speaker This commit fixes various 64bit portability problems required for 1998-06-07 17:13:14 +00:00
sr Removed unused includes. 1998-06-21 14:53:44 +00:00
syscons Changed %n to %r in devfs name format strings. %n has almost gone away. 1998-07-15 12:18:34 +00:00
tx Fixed printf format errors (only 1 left in GENERIC now). 1998-07-13 09:53:11 +00:00
vn SLICE probing becomes asynchronous. It can now be triggered by 1998-07-13 08:23:05 +00:00
vx Fixed printf format errors (only 1 left in GENERIC now). 1998-07-13 09:53:11 +00:00
wl Don't declare isa device structs or isa interrupt handlers in <sys/conf>, 1998-06-17 14:58:04 +00:00