freebsd-skq/sys/dev/ioat
cem 39d22b9678 ioat: Handle channel-fatal HW errors safely
Certain invalid operations trigger hardware error conditions.  Error
conditions that only halt one channel can be detected and recovered by
resetting the channel.  Error conditions that halt the whole device are
generally not recoverable.

Add a sysctl to inject channel-fatal HW errors,
'dev.ioat.<N>.force_hw_error=1'.

When a halt due to a channel error is detected, ioat(4) blocks new
operations from being queued on the channel, completes any outstanding
operations with an error status, and resets the channel before allowing
new operations to be queued again.

Update ioat.4 to document error recovery;  document blockfill introduced
in r290021 while we are here;  document ioat_put_dmaengine() added in
r289907;  document DMA_NO_WAIT added in r289982.

Sponsored by:	EMC / Isilon Storage Division
2015-10-31 20:38:06 +00:00
..
ioat_hw.h ioat: Handle channel-fatal HW errors safely 2015-10-31 20:38:06 +00:00
ioat_internal.h ioat: Handle channel-fatal HW errors safely 2015-10-31 20:38:06 +00:00
ioat_test.c ioat: Handle channel-fatal HW errors safely 2015-10-31 20:38:06 +00:00
ioat_test.h ioatcontrol(8): Add and document "raw" testing mode 2015-10-29 04:16:16 +00:00
ioat.c ioat: Handle channel-fatal HW errors safely 2015-10-31 20:38:06 +00:00
ioat.h ioat: Handle channel-fatal HW errors safely 2015-10-31 20:38:06 +00:00