diff options
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a/mm_gk20a.c')
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/mm_gk20a.c | 26 |
1 files changed, 15 insertions, 11 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/mm_gk20a.c b/drivers/gpu/nvgpu/gk20a/mm_gk20a.c index 32ccc5b8..b12091bf 100644 --- a/drivers/gpu/nvgpu/gk20a/mm_gk20a.c +++ b/drivers/gpu/nvgpu/gk20a/mm_gk20a.c | |||
@@ -1898,19 +1898,23 @@ void gk20a_gmmu_free_attr(struct gk20a *g, enum dma_attr attr, | |||
1898 | if (attr) { | 1898 | if (attr) { |
1899 | DEFINE_DMA_ATTRS(attrs); | 1899 | DEFINE_DMA_ATTRS(attrs); |
1900 | dma_set_attr(attr, &attrs); | 1900 | dma_set_attr(attr, &attrs); |
1901 | if (attr == DMA_ATTR_NO_KERNEL_MAPPING) | 1901 | if (attr == DMA_ATTR_NO_KERNEL_MAPPING) { |
1902 | dma_free_attrs(d, mem->size, mem->pages, | 1902 | if (mem->pages) |
1903 | sg_dma_address(mem->sgt->sgl), | 1903 | dma_free_attrs(d, mem->size, mem->pages, |
1904 | &attrs); | 1904 | sg_dma_address(mem->sgt->sgl), |
1905 | else | 1905 | &attrs); |
1906 | dma_free_attrs(d, mem->size, mem->cpu_va, | 1906 | } else { |
1907 | sg_dma_address(mem->sgt->sgl), | 1907 | if (mem->cpu_va) |
1908 | &attrs); | 1908 | dma_free_attrs(d, mem->size, |
1909 | mem->cpu_va, | ||
1910 | sg_dma_address(mem->sgt->sgl), | ||
1911 | &attrs); | ||
1912 | } | ||
1909 | } else { | 1913 | } else { |
1910 | dma_free_coherent(d, mem->size, mem->cpu_va, | 1914 | if (mem->cpu_va) |
1911 | sg_dma_address(mem->sgt->sgl)); | 1915 | dma_free_coherent(d, mem->size, mem->cpu_va, |
1916 | sg_dma_address(mem->sgt->sgl)); | ||
1912 | } | 1917 | } |
1913 | |||
1914 | mem->cpu_va = NULL; | 1918 | mem->cpu_va = NULL; |
1915 | mem->pages = NULL; | 1919 | mem->pages = NULL; |
1916 | } | 1920 | } |