contiguous memory allocation problem

Julian Elischer julian at elischer.org
Mon Jul 3 01:40:45 UTC 2006


Ian Dowse wrote:

>In message <200607021138.11945.hselasky at c2i.net>, Hans Petter Selasky writes:
>  
>
>>But there is one problem, that has been overlooked, and that is High speed 
>>isochronous transfers, which are not supported by the existing USB system. I 
>>don't think that the EHCI specification was designed for scatter and gather, 
>>when you consider this:
>>
>>8 transfers of 0xC00 bytes has to fit on 7 pages. If this is going to work, 
>>and I am right, one page has to contain two transfers. (see page 43 of 
>>ehci-r10.pdf)
>>    
>>
>
>I haven't looked into the details, but the text in section 3.3.3
>seems to suggest that EHCI is designed to not require physically
>contiguous allocations here either, so the same approach of using
>bus_dmamap_load() should work:
>
>  This data structure requires the associated data buffer to be
>  contiguous (relative to virtual memory), but allows the physical
>  memory pages to be non-contiguous. Seven page pointers are provided
>  to support the expression of 8 isochronous transfers. The seven
>  pointers allow for 3 (transactions) * 1024 (maximum packet size)
>  * 8 (transaction records) (24576 bytes) to be moved with this
>  data structure, regardless of the alignment offset of the first
>  page.
>  
>

yes, as long as the beffers are contiguous in some virtual space then 
the maximum number of pages they
can need is 7.
(they actually fit into 6 but they may start part way through the first 
page and may therefore overflow into a 7th).

>Ian
>_______________________________________________
>freebsd-hackers at freebsd.org mailing list
>http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
>To unsubscribe, send any mail to "freebsd-hackers-unsubscribe at freebsd.org"
>  
>


More information about the freebsd-hackers mailing list