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