Messages in this thread | | | Date | Tue, 12 Aug 2008 20:24:56 +0200 | From | Joerg Roedel <> | Subject | Re: [PATCH 4/7] x86: add alloc_coherent dma_ops callback to NOMMU driver |
| |
On Tue, Aug 12, 2008 at 05:24:14PM +0200, Joerg Roedel wrote: > +static void * > +nommu_alloc_coherent(struct device *hwdev, size_t size, > + dma_addr_t *dma_addr, gfp_t gfp) > +{ > + unsigned long dma_mask; > + int node; > + struct page *page; > + > + if (hwdev->dma_mask == NULL) > + return NULL; > + > + gfp &= ~(__GFP_DMA | __GFP_HIGHMEM | __GFP_DMA32); > + gfp |= __GFP_ZERO; > + > + dma_mask = hwdev->coherent_dma_mask; > + if (!dma_mask) > + dma_mask = *(hwdev->dma_mask); > + > + if (dma_mask <= DMA_24BIT_MASK) > + gfp |= GFP_DMA; > + else if (dma_mask <= DMA_32BIT_MASK) > + gfp |= GFP_DMA32;
Argh. But there is a bug in this logic :-( I fix it and resend.
Joerg
| |