(FWD) Serious busdma bug in -current in relation to USB harware.
Hans Petter Selasky
hselasky at c2i.net
Sat Nov 8 08:25:03 PST 2008
On Saturday 08 November 2008, Hans Petter Selasky wrote:
> On Saturday 08 November 2008, Alexander Motin wrote:
> 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?
Hi,
The real reason is that the EHCI and OHCI only takes the full physical address
of the _first_ page, and then for the subsequent pages only stores the upper
bits of the physical address, leaving it impossible to program a per-page
data start offset. The hardware assumes that the lower part of the physical
address wraps modulo PAGE_SIZE, and that's it. Don't ask me why they designed
it like that. Currently USB is broken on all architectures where bouncing is
used. I see no other way around this than to change busdma.
--HPS
More information about the freebsd-current
mailing list