PERFORCE change 152649 for review

Alexander Motin mav at FreeBSD.org
Sat Nov 8 06:28:11 PST 2008


Hans Petter Selasky wrote:
> On Saturday 08 November 2008, Alexander Motin wrote:
>> Hans Petter Selasky wrote:
>>> http://perforce.freebsd.org/chv.cgi?CH=152649
>>>
>>> Change 152649 by hselasky at hselasky_laptop001 on 2008/11/08 09:09:50
>>>
>>> 	Fix a serious BUSDMA bug: The initial virtual page offset is
>>> 	not retained on the bounce pages, which is what the EHCI and
>>> 	the OHCI expects.
>> I'm sorry, but are you sure with this? If bounce page will have the same
>> page offset as original data, then how bus_dma_tag_create()'s alignment
>> parameter expected to work? What if data are misaligned, but hardware
>> require alignment?
> 
> I'm not saying that my patch is fully correct for all cases, but at least it 
> solves the USB case. USB uses an alignment of 1-byte for data.
> 
> Probably someone needs to sit down a think this through. Like it is now, it is 
> very scary with regard to USB!

This is a change to the one of basic kernel subsystems. Any change there 
will affect ton's of drivers and may cause issues with too many of 
broken/specific hardware. It should be done with maximum care without 
quick fixes!

> Maybe it is time to create a new busdma tag flag? BUS_DMA_NOREALIGN?
> 
> If this flag is set, busdma should refuse to load the memory if the memory is 
> not aligned already to the given aligment in the DMA tag ?

What is the real reason to do that? If you are saying that you uses 
1-byte alignment then you should be able to accept _any_ address that 
busdma will allocate to you! Why original data alignment should so 
strictly affect hardware operation?

I am sure then there is not so good with alignment in busdma now. I was 
trying to get 4K alignment and instead got some strange effects. But 
this change looks like hides the truth even deeper.

-- 
Alexander Motin


More information about the p4-projects mailing list