Re: Allocating buffers for USB transfers (again)

From: Alan Stern
Date: Thu Jul 07 2011 - 11:06:21 EST


On Thu, 7 Jul 2011, Daniel Mack wrote:

> On Thu, Jul 7, 2011 at 2:33 PM, Oliver Neukum <oliver@xxxxxxxxxx> wrote:
>
> > PS:  Do you still see this if you enable 64bit DMA for EHCI?
>
> The problem is that I personally don't see that issue at all. I even
> installed 4GB of RAM to my development machine last year to be able to
> reproduce this, but I can't, even when the memory allocator is under
> heavy load. The only people who see this effect are Pedro Ribeiro and
> William Light (both in Cc:), and both have been very helpful in trying
> patches and reporting back in detail. Which instructions could we
> probably give to these people to finally hunt this issue down?

Oliver is perfectly right; this problem needs to be solved at the
source.

One thing you might be able to do is put together a debugging patch
that would print out the bus address corresponding to the DMA handle
after the DMA mapping takes place, i.e., after the second
dma_map_single() call in usb_hcd_map_urb_for_dma() returns. Or at
least, check the bus address to see if it is below the 4 GB limit and
print out an error message if it isn't.

(I don't know how one translates a DMA address to a bus address. You'd
have to ask somebody who knows or figure it out.)

Alan Stern

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/