x86: add alloc_coherent dma_ops callback to GART driver
[ v2 - x86: make gart_alloc_coherent return zeroed memory FUJITA Tomonori pointed it out that the dma_alloc_coherent function should return memory set to zero. This patch adds this to the GART implementation too. ] Signed-off-by: Joerg Roedel <joerg.roedel@amd.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
This commit is contained in:
parent
1fca254274
commit
94581094e7
|
@ -499,6 +499,26 @@ error:
|
|||
return 0;
|
||||
}
|
||||
|
||||
/* allocate and map a coherent mapping */
|
||||
static void *
|
||||
gart_alloc_coherent(struct device *dev, size_t size, dma_addr_t *dma_addr,
|
||||
gfp_t flag)
|
||||
{
|
||||
void *vaddr;
|
||||
|
||||
vaddr = (void *)__get_free_pages(flag | __GFP_ZERO, get_order(size));
|
||||
if (!vaddr)
|
||||
return NULL;
|
||||
|
||||
*dma_addr = gart_map_single(dev, __pa(vaddr), size, DMA_BIDIRECTIONAL);
|
||||
if (*dma_addr != bad_dma_address)
|
||||
return vaddr;
|
||||
|
||||
free_pages((unsigned long)vaddr, get_order(size));
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static int no_agp;
|
||||
|
||||
static __init unsigned long check_iommu_size(unsigned long aper, u64 aper_size)
|
||||
|
@ -701,6 +721,7 @@ static struct dma_mapping_ops gart_dma_ops = {
|
|||
.sync_sg_for_device = NULL,
|
||||
.map_sg = gart_map_sg,
|
||||
.unmap_sg = gart_unmap_sg,
|
||||
.alloc_coherent = gart_alloc_coherent,
|
||||
};
|
||||
|
||||
void gart_iommu_shutdown(void)
|
||||
|
|
Loading…
Reference in New Issue