At the moment, adadump() and dadump() use the regular CAM completion
queues for their I/O, which can cause lockups during kernel dumps:
camisr_runqueues() may complete non-dump I/O that was pending at the
time the kernel panicked. This can result in a recursive panic if the
completion handler does something like tear down a buffer mapping or
free a CCB, and also perturbs the kernel's state after it panicked,
which is less than ideal.
This change adds a standalone queue for dump I/O. adadump() and dadump()
set a new xflag on their CCBs, and xpt_done() places CCBs with this flag
set into the dump queue. camisr_runqueues() (which is only used during
kernel dumps anyway) is modified to poll the dump queue.