[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20100412171507.GB30801@buzzloop.caiaq.de>
Date: Mon, 12 Apr 2010 19:15:07 +0200
From: Daniel Mack <daniel@...aq.de>
To: Alan Stern <stern@...land.harvard.edu>
Cc: Andi Kleen <andi@...stfloor.org>, Pedro Ribeiro <pedrib@...il.com>,
linux-kernel@...r.kernel.org, akpm@...ux-foundation.org,
Greg KH <gregkh@...e.de>, alsa-devel@...a-project.org,
linux-usb@...r.kernel.org
Subject: Re: USB transfer_buffer allocations on 64bit systems
On Mon, Apr 12, 2010 at 12:57:16PM -0400, Alan Stern wrote:
> On Mon, 12 Apr 2010, Andi Kleen wrote:
> > Hmm, thanks. But things must still go wrong somewhere, otherwise
> > the GFP_DMA32 wouldn't be needed?
>
> Indeed, something must go wrong somewhere. Since Daniel's patch fixed
> the problem by changing the buffer from a streaming mapping to a
> coherent mapping, it's logical to assume that bad DMA addresses have
> something to do with it. But we don't really know for certain.
Given that - at least for non-64-aware host controllers - we want memory
<4GB anyway for USB transfers to avoid DMA bouncing buffers, maybe we
should just do that and fix the problem at this level? I already started
to implement usb_[mz]alloc() and use it in some USB drivers.
But even after all collected wisdom about memory management in this
thread, I'm still uncertain of how to get suitable memory. Using
dma_alloc_coherent() seems overdone as that type of memory is not
necessarily needed and might be a costly good on some platforms. And as
fas as I understand, kmalloc(GFP_DMA) does not avoid memory >4GB.
Can anyone explain which is the right way to go?
Daniel
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists