svn commit: r188350 - in head/sys: amd64/amd64 arm/arm
dev/usb2/core i386/i386 ia64/ia64 sys
Sam Leffler
sam at freebsd.org
Mon Feb 9 11:00:56 PST 2009
Scott Long wrote:
> M. Warner Losh wrote:
>> In message: <2EA5FEEB-E676-4D1B-9700-399C783F4590 at mac.com>
>> Marcel Moolenaar <xcllnt at mac.com> writes:
>> : : On Feb 9, 2009, at 6:23 AM, John Baldwin wrote:
>> : : > On Monday 09 February 2009 12:37:53 am Marcel Moolenaar wrote:
>> : >>
>> : >> On Feb 8, 2009, at 5:00 PM, Scott Long wrote:
>> : >>
>> : >>> Busdma allows you to request bouncing for realignment.
>> : >>
>> : >> How exactly?
>> : >
>> : > The 'align' parameter to bus_dma_tag_create(). If your hardware
>> : > needs buffers
>> : > to be aligned on a 4-byte boundary and you bus_dmamap_load() a
>> buffer
>> : > where 'addr % 4 != 0', then the buffer is bounced. Since by
>> default : > the new
>> : > buffer starts on a page boundary, it satifies the 'addr % 4'.
>> : : But according to the man page, bounce buffering may not
>> : be implemented or not be applicable to a platform. It
>> : seems to me that you cannot depend on this side-effect
>> : in a generic driver. Are you guys talking only in terms
>> : of i386 or is this generally applicable?
>>
>> There's no bounce buffering on MIPS right now, for example... There
>> likely should be, but it isn't there now.
>>
>> Warner
>
> So yes, it's only available really on amd64 and i386 at the moment.
> No reason why it can't be available elsewhere, and I'm working on
> factoring
> all of the bounce logic out into an MD file so it can be made available.
> For architectures that use an IOMMU, there's probably no reason why
> re-alignment can't use the IOMMU instead of bouncing.
ARM does bounce buffers. Looks like it'll bounce for mis-aligned data.
Sam
More information about the svn-src-all
mailing list