less than 16 bytes) of each SCSI command block (acb), just
prepare DMA safe buffer in struct osiop_ds and copy commands
into the buffer on each transfer to save resources and
reduce small and unaligned cache flush ops.
As a side effect, sizeof struct osiop_ds (DMA safe data buffer)
is now 256 bytes (including padding) so it could be more
cacheline friendly on bus_dmamap_sync(9) ops.
Tested on Express5800/230 (arc) and EWS4800/360AD (ews4800mips),
and no visible performance difference on bonnie.
(hppa and mvme68k are untested)
This is based on amiga's siop driver, but converted to use
bus_space(9) functions and modified to fit bus_dma(9) framework.
Currently tested on NetBSD/arc with jazzio 53c710 SCSI,
which really requires bus_dma(9) functions :-)
Sync transfers and disconnect/reconnect are also working.
TODO:
- Test under more heavy load
- Clean up osiop_checkintr() hander
- Reorganize command queue and sync negotiation handling more suitable
for thorpej-scsipi mid-layer
- Re-think defered interrupt handling for amiga