summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/tegra/linux/platform_gk20a_tegra.c
diff options
context:
space:
mode:
authorKonsta Holtta <kholtta@nvidia.com>2017-04-24 03:14:24 -0400
committermobile promotions <svcmobile_promotions@nvidia.com>2017-04-26 12:14:31 -0400
commitcacd455dfdcb8864e296268a230cc490759a3f9e (patch)
tree17411912d7faab2c778923833d4207fc4a2affbf /drivers/gpu/nvgpu/tegra/linux/platform_gk20a_tegra.c
parent71af78d2c22c6519b1ae2cbe3826f05e178d86f6 (diff)
gpu: nvgpu: use correct flags for secure allocs
The gfp_t argument for dma_alloc_attrs() cannot take DMA_MEMORY_NOMAP - it's interpreted as __GFP_RECLAIMABLE which has the same integer value. Use GFP_KERNEL for the flag argument and set DMA_ATTR_NO_KERNEL_MAPPING for dma attrs which the code was trying to do with the flag that is meant for the coherent allocation API. Bug 200299572 Change-Id: Ie4d988fbeeb954f6f7ccd4f9fb438968d76f0c6c Signed-off-by: Konsta Holtta <kholtta@nvidia.com> Reviewed-on: http://git-master/r/1468315 Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com> Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/tegra/linux/platform_gk20a_tegra.c')
-rw-r--r--drivers/gpu/nvgpu/tegra/linux/platform_gk20a_tegra.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/drivers/gpu/nvgpu/tegra/linux/platform_gk20a_tegra.c b/drivers/gpu/nvgpu/tegra/linux/platform_gk20a_tegra.c
index c2f0321a..880ed0ed 100644
--- a/drivers/gpu/nvgpu/tegra/linux/platform_gk20a_tegra.c
+++ b/drivers/gpu/nvgpu/tegra/linux/platform_gk20a_tegra.c
@@ -106,6 +106,7 @@ static void gk20a_tegra_secure_page_destroy(struct device *dev,
106 struct secure_page_buffer *secure_buffer) 106 struct secure_page_buffer *secure_buffer)
107{ 107{
108 DEFINE_DMA_ATTRS(attrs); 108 DEFINE_DMA_ATTRS(attrs);
109 dma_set_attr(DMA_ATTR_NO_KERNEL_MAPPING, __DMA_ATTR(attrs));
109 dma_free_attrs(&tegra_vpr_dev, secure_buffer->size, 110 dma_free_attrs(&tegra_vpr_dev, secure_buffer->size,
110 (void *)(uintptr_t)secure_buffer->iova, 111 (void *)(uintptr_t)secure_buffer->iova,
111 secure_buffer->iova, __DMA_ATTR(attrs)); 112 secure_buffer->iova, __DMA_ATTR(attrs));
@@ -123,8 +124,9 @@ int gk20a_tegra_secure_page_alloc(struct device *dev)
123 if (g->is_fmodel) 124 if (g->is_fmodel)
124 return -EINVAL; 125 return -EINVAL;
125 126
127 dma_set_attr(DMA_ATTR_NO_KERNEL_MAPPING, __DMA_ATTR(attrs));
126 (void)dma_alloc_attrs(&tegra_vpr_dev, size, &iova, 128 (void)dma_alloc_attrs(&tegra_vpr_dev, size, &iova,
127 DMA_MEMORY_NOMAP, __DMA_ATTR(attrs)); 129 GFP_KERNEL, __DMA_ATTR(attrs));
128 if (dma_mapping_error(&tegra_vpr_dev, iova)) 130 if (dma_mapping_error(&tegra_vpr_dev, iova))
129 return -ENOMEM; 131 return -ENOMEM;
130 132
@@ -142,6 +144,7 @@ static void gk20a_tegra_secure_destroy(struct gk20a *g,
142 144
143 if (desc->mem.priv.sgt) { 145 if (desc->mem.priv.sgt) {
144 phys_addr_t pa = sg_phys(desc->mem.priv.sgt->sgl); 146 phys_addr_t pa = sg_phys(desc->mem.priv.sgt->sgl);
147 dma_set_attr(DMA_ATTR_NO_KERNEL_MAPPING, __DMA_ATTR(attrs));
145 dma_free_attrs(&tegra_vpr_dev, desc->mem.size, 148 dma_free_attrs(&tegra_vpr_dev, desc->mem.size,
146 (void *)(uintptr_t)pa, 149 (void *)(uintptr_t)pa,
147 pa, __DMA_ATTR(attrs)); 150 pa, __DMA_ATTR(attrs));
@@ -164,8 +167,9 @@ int gk20a_tegra_secure_alloc(struct device *dev,
164 if (!platform->secure_alloc_ready) 167 if (!platform->secure_alloc_ready)
165 return -EINVAL; 168 return -EINVAL;
166 169
170 dma_set_attr(DMA_ATTR_NO_KERNEL_MAPPING, __DMA_ATTR(attrs));
167 (void)dma_alloc_attrs(&tegra_vpr_dev, size, &iova, 171 (void)dma_alloc_attrs(&tegra_vpr_dev, size, &iova,
168 DMA_MEMORY_NOMAP, __DMA_ATTR(attrs)); 172 GFP_KERNEL, __DMA_ATTR(attrs));
169 if (dma_mapping_error(&tegra_vpr_dev, iova)) 173 if (dma_mapping_error(&tegra_vpr_dev, iova))
170 return -ENOMEM; 174 return -ENOMEM;
171 175