diffs from Nick Hibma <n_hibma@freebsd.org>, but with substantial changes from me. XXX Not tested on FreeBSD yet.
DMA-able memory in small chunks (USB uses a lot of 8 byte chunks). Using the bus_dma functions directly is inefficient.