1
0
Fork 0

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>
hifive-unleashed-5.1
Joerg Roedel 2008-08-19 16:32:39 +02:00 committed by Ingo Molnar
parent 1fca254274
commit 94581094e7
1 changed files with 21 additions and 0 deletions

View File

@ -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)