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>