PC-BSD/trueos df1afa2sys/dev/ioat ioat.c ioat_internal.h

Fix few issues in ioat(4) driver.

 - Do not explicitly count active descriptors.  It allows hardware reset
to happen while device is still referenced, plus simplifies locking.
 - Do not stop/start callout each time the queue becomes empty.  Let it
run to completion and rearm if needed, that is much cheaper then to touch
it every time, plus also simplifies locking.
 - Decouple submit and cleanup locks, making driver reentrant.
 - Avoid memory mapped status register read on every interrupt.
 - Improve locking during device attach/detach.
 - Remove some no longer used variables.

Reviewed by:    cem
MFC after:      1 week
Sponsored by:   iXsystems, Inc.
Differential Revision:  https://reviews.freebsd.org/D19231
DeltaFile
+127-205sys/dev/ioat/ioat.c
+14-29sys/dev/ioat/ioat_internal.h
+141-2342 files

UnifiedSplitRaw