Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 8 Nov 2008 17:27:06 +0100
From:      Hans Petter Selasky <hselasky@c2i.net>
To:        freebsd-current@freebsd.org
Cc:        freebsd-usb@freebsd.org
Subject:   Re: (FWD) Serious busdma bug in -current in relation to USB harware.
Message-ID:  <200811081727.08788.hselasky@c2i.net>
In-Reply-To: <200811081353.09697.hselasky@c2i.net>
References:  <20081107082740.GA1334@icarus.home.lan> <200811081023.10058.hselasky@freebsd.org> <200811081353.09697.hselasky@c2i.net>

next in thread | previous in thread | raw e-mail | index | archive | help
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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200811081727.08788.hselasky>