To cope with temporary shortages, busdma has a callback mechanism to
fill in the dma SGLs. This differs from Linux. The callback will always
be called with the resources it needs to do the I/O. Move enqueueing of
the command to the hardare to the end of mpi3mr_prepare_sgls. Adjust
error detection to treat EINPROGRESS as not an error. Tweak some error
handling for failed dma loading in the callback routine (though it's
unclear how those can happen absent other bugs). Add comment for some
checks that should never happen, and should be asserts instead.
Sponsored by: Netflix