diff options
author | Alexandre Courbot <acourbot@nvidia.com> | 2014-12-08 18:29:01 +0900 |
---|---|---|
committer | James Thomas <james.thomas@codethink.co.uk> | 2015-04-14 10:43:07 +0100 |
commit | 9a2885493647864acfc0737a3c08b28ecfb3e6b7 (patch) | |
tree | 5deeda108710986d5814cbdfc0d1902418b7c3c1 | |
parent | 017221b89fcf9d9fc8a208752c0829ef8a218022 (diff) | |
download | linux-9a2885493647864acfc0737a3c08b28ecfb3e6b7.tar.gz |
ttm: fix page lookup when using IOMMU
-rw-r--r-- | drivers/gpu/drm/ttm/ttm_page_alloc_dma.c | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/drivers/gpu/drm/ttm/ttm_page_alloc_dma.c b/drivers/gpu/drm/ttm/ttm_page_alloc_dma.c index e3c4a6bb2d9f..3077f1554099 100644 --- a/drivers/gpu/drm/ttm/ttm_page_alloc_dma.c +++ b/drivers/gpu/drm/ttm/ttm_page_alloc_dma.c @@ -342,13 +342,12 @@ static struct dma_page *__ttm_dma_alloc_page(struct dma_pool *pool) d_page->vaddr = dma_alloc_coherent(pool->dev, pool->size, &d_page->dma, pool->gfp_flags); - if (d_page->vaddr) -#if defined(CONFIG_ARM) || defined(CONFIG_ARM64) - d_page->p = phys_to_page(d_page->dma); -#else - d_page->p = virt_to_page(d_page->vaddr); -#endif - else { + if (d_page->vaddr) { + if (is_vmalloc_addr(d_page->vaddr)) + d_page->p = vmalloc_to_page(d_page->vaddr); + else + d_page->p = virt_to_page(d_page->vaddr); + } else { kfree(d_page); d_page = NULL; } |