On Tue, Mar 02, 2004 at 03:09:15PM +0100, Takashi Iwai wrote:
> At Mon, 01 Mar 2004 18:51:56 +0100,
> I wrote:
> > ah, yes, then it's fine.  thanks.
> 
> i was too fast to confirm that -- it turned out that this doesn't
> help.
> 
> since dma_alloc_coherent() is just a wrapper to pci_alloc_consistent()
> on x86, GFP_KERNEL is ignored.  instead, GFP_ATOMIC is used always.
> sigh...

include/asm-i386/dma-mapping.h:

void *dma_alloc_coherent(struct device *dev, size_t size,
                           dma_addr_t *dma_handle, int flag);

arch/i386/kernel/pci-dma.c:

void *dma_alloc_coherent(struct device *dev, size_t size,
                           dma_addr_t *dma_handle, int gfp)
{
        void *ret;
        /* ignore region specifiers */
        gfp &= ~(__GFP_DMA | __GFP_HIGHMEM);
 
        if (dev == NULL || (*dev->dma_mask < 0xffffffff))
                gfp |= GFP_DMA;
        ret = (void *)__get_free_pages(gfp, get_order(size));
 
        if (ret != NULL) {
                memset(ret, 0, size);
                *dma_handle = virt_to_phys(ret);
        }
        return ret;
}

I, therefore, suggest that you're not looking at a 2.6.3 kernel.  This
was changed from pci_alloc_consistent to dma_alloc_coherent on 22 Dec,
and was modified to take the GFP flags on 13 Jan.

dma_alloc_coherent() is therefore not a wrapper for pci_alloc_consistent().

However, include/asm-generic/pci-dma-compat.h which is included by
include/asm-i386/pci.h contains:

static inline void *
pci_alloc_consistent(struct pci_dev *hwdev, size_t size,
                     dma_addr_t *dma_handle)
{
        return dma_alloc_coherent(hwdev == NULL ? NULL : &hwdev->dev, size, 
dma_handle, GFP_ATOMIC);
}

I'm not sure which kernel are you looking at, because it doesn't seem
to match mainline kernels.

-- 
Russell King
 Linux kernel    2.6 ARM Linux   - http://www.arm.linux.org.uk/
 maintainer of:  2.6 PCMCIA      - http://pcmcia.arm.linux.org.uk/
                 2.6 Serial core


-------------------------------------------------------
SF.Net is sponsored by: Speed Start Your Linux Apps Now.
Build and deploy apps & Web services for Linux with
a free DVD software kit from IBM. Click Now!
http://ads.osdn.com/?ad_id=1356&alloc_id=3438&op=click
_______________________________________________
Alsa-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/alsa-devel

Reply via email to