On Thursday 24 April 2008, John Baldwin wrote: > > This would indicate a bug in the bus_dmamap_load() call (wrong length?) and > that is going to hose you when you do the bus_dmamap_sync() for systems > with bounce pages (not enough data will get copied back and forth?). You > need to track down the real bug and fix it rather than adding a hack in > your callback routine.
Hi John, The minimum segment size is PAGE_SIZE bytes in my DMA-tag. Bus-dma starts counting at the memory location of the allocation. And not the memory location aligned to PAGE_SIZE bytes. Memory pages: |--------------|--------------| My allocation: |---------XXXXXXXXXXXXX-------| Sometimes when I allocate DMA memory I can end up having an allocation crossing two contiguous memory pages in physical memory. In those cases bus_dma does not give me the segment address of the second page in the segment list, because the allocation is less than PAGE_SIZE bytes. It fits within the values specified in the DMA tag. But in other cases, where the pages are not contiguous in RAM, bus_dma will return two different segment addresses. The question is: Is this a bug or is it a feature? --HPS _______________________________________________ freebsd-usb@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-usb To unsubscribe, send any mail to "[EMAIL PROTECTED]"