Re: USB transfer_buffer allocations on 64bit systems

From: Alan Stern
Date: Wed Apr 14 2010 - 14:16:00 EST


[Removed alsa-devel from the CC: list because this doesn't involve ALSA
any more]

On Wed, 14 Apr 2010, Daniel Mack wrote:

> No worries - I agree. But unfortunately, I'm out of ideas now, and my
> initial thoughts about what might cause the trouble were abviously not
> able to explain the issue. Does anyone see further steps of tracking
> this issue down?

Since using mem=4096M or GFP_DMA stopped the symptoms, it seems very
likely that a buffer is getting allocated above the 4 GB line and not
bounced or IOMMU-mapped correctly.

David, do you have anything to suggest? Any ways to check for IOMMU or
related errors?

The problem, in short, is that USB audio doesn't work properly when
Pedro boots a 64-bit kernel on his 4-GB machine. With a 32-bit kernel
it works okay, and it also works if we use dma_alloc_coherent(). The
host controller is limited to 32-bit DMA, and the DMA addresses
generated by dma_map_single() appear to be normal.

At the moment we don't even know if this is caused by a bug in the
kernel or a bug in Pedro's hardware. But he has observed the same
problem on two different machines, both using the ICH9 chipset.

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/