[PATCH] Sam440ep support

Takashi Iwai tiwai at suse.de
Tue May 6 21:31:35 EST 2008


At Tue, 06 May 2008 21:25:53 +1000,
Benjamin Herrenschmidt wrote:
> 
> 
> On Tue, 2008-05-06 at 13:14 +0200, Takashi Iwai wrote:
> > > sg allocations are usually lists of page, so virt_to_page shouldn't
> > be a
> > > problem in the first place, though we still need some way to get the
> > > right prot attributes.
> > 
> > The problem is that ALSA SG buffer is composed from pages allocated
> > via dma_alloc_coherent(), and the pages are retrieved via virt_to_page
> > for DMA pages, as found in sound/core/sgbuf.c.
> > 
> > I didn't care about SG-buffer cases in my initial patch, and it's a
> > bit messy.  The current code requires page lists becasue it calls
> > vmap() to get a virtually linear buffer.
> 
> Hrm... the problem is that you aren't supposed to make up sglists with
> the result of dma_alloc_coherent... It might be a limitation of our core
> DMA API, but that's we have to deal with today..
> 
> If you're going to make up sglists and call vmap, you should allocate
> pages with normal GFP. If that is a problem vs. DMA'bility of those
> pages, then ... we have a problem :-)
> 
> I don't think we can easily update the DMA API at this stage. What we
> could do is provide a way to retrieve the struct page array from the
> result of dma_alloc_coherent...

In most cases, it can be obtained via pfn_to_page(), I suppose.  But,
it's definitely arch-specific thingy, and a generic solution would be
really appreciated.

Alternatively, we can change the ALSA PCM core code that accesses the
virtual linear buffer and handles SG-buffers as they are.  Maybe it'll
give a bit more useful clean-up in the whole memory-management codes
in ALSA in the end.


Takashi



More information about the Linuxppc-dev mailing list