diff options
Diffstat (limited to 'drivers/gpu/nvgpu/common')
-rw-r--r-- | drivers/gpu/nvgpu/common/mm/dma.c | 23 |
1 files changed, 16 insertions, 7 deletions
diff --git a/drivers/gpu/nvgpu/common/mm/dma.c b/drivers/gpu/nvgpu/common/mm/dma.c index f7331f8e..60fe3658 100644 --- a/drivers/gpu/nvgpu/common/mm/dma.c +++ b/drivers/gpu/nvgpu/common/mm/dma.c | |||
@@ -50,8 +50,10 @@ int nvgpu_dma_alloc_flags(struct gk20a *g, unsigned long flags, size_t size, | |||
50 | NVGPU_DMA_NO_KERNEL_MAPPING, | 50 | NVGPU_DMA_NO_KERNEL_MAPPING, |
51 | size, mem); | 51 | size, mem); |
52 | 52 | ||
53 | if (!err) | 53 | if (!err) { |
54 | return 0; | 54 | return 0; |
55 | } | ||
56 | |||
55 | /* | 57 | /* |
56 | * Fall back to sysmem (which may then also fail) in case | 58 | * Fall back to sysmem (which may then also fail) in case |
57 | * vidmem is exhausted. | 59 | * vidmem is exhausted. |
@@ -105,8 +107,10 @@ int nvgpu_dma_alloc_map_flags(struct vm_gk20a *vm, unsigned long flags, | |||
105 | flags | NVGPU_DMA_NO_KERNEL_MAPPING, | 107 | flags | NVGPU_DMA_NO_KERNEL_MAPPING, |
106 | size, mem); | 108 | size, mem); |
107 | 109 | ||
108 | if (!err) | 110 | if (!err) { |
109 | return 0; | 111 | return 0; |
112 | } | ||
113 | |||
110 | /* | 114 | /* |
111 | * Fall back to sysmem (which may then also fail) in case | 115 | * Fall back to sysmem (which may then also fail) in case |
112 | * vidmem is exhausted. | 116 | * vidmem is exhausted. |
@@ -127,8 +131,9 @@ int nvgpu_dma_alloc_map_flags_sys(struct vm_gk20a *vm, unsigned long flags, | |||
127 | { | 131 | { |
128 | int err = nvgpu_dma_alloc_flags_sys(vm->mm->g, flags, size, mem); | 132 | int err = nvgpu_dma_alloc_flags_sys(vm->mm->g, flags, size, mem); |
129 | 133 | ||
130 | if (err) | 134 | if (err) { |
131 | return err; | 135 | return err; |
136 | } | ||
132 | 137 | ||
133 | mem->gpu_va = nvgpu_gmmu_map(vm, mem, size, 0, | 138 | mem->gpu_va = nvgpu_gmmu_map(vm, mem, size, 0, |
134 | gk20a_mem_flag_none, false, | 139 | gk20a_mem_flag_none, false, |
@@ -157,8 +162,9 @@ int nvgpu_dma_alloc_map_flags_vid(struct vm_gk20a *vm, unsigned long flags, | |||
157 | { | 162 | { |
158 | int err = nvgpu_dma_alloc_flags_vid(vm->mm->g, flags, size, mem); | 163 | int err = nvgpu_dma_alloc_flags_vid(vm->mm->g, flags, size, mem); |
159 | 164 | ||
160 | if (err) | 165 | if (err) { |
161 | return err; | 166 | return err; |
167 | } | ||
162 | 168 | ||
163 | mem->gpu_va = nvgpu_gmmu_map(vm, mem, size, 0, | 169 | mem->gpu_va = nvgpu_gmmu_map(vm, mem, size, 0, |
164 | gk20a_mem_flag_none, false, | 170 | gk20a_mem_flag_none, false, |
@@ -179,9 +185,11 @@ void nvgpu_dma_free(struct gk20a *g, struct nvgpu_mem *mem) | |||
179 | { | 185 | { |
180 | switch (mem->aperture) { | 186 | switch (mem->aperture) { |
181 | case APERTURE_SYSMEM: | 187 | case APERTURE_SYSMEM: |
182 | return nvgpu_dma_free_sys(g, mem); | 188 | nvgpu_dma_free_sys(g, mem); |
189 | break; | ||
183 | case APERTURE_VIDMEM: | 190 | case APERTURE_VIDMEM: |
184 | return nvgpu_dma_free_vid(g, mem); | 191 | nvgpu_dma_free_vid(g, mem); |
192 | break; | ||
185 | default: | 193 | default: |
186 | break; /* like free() on "null" memory */ | 194 | break; /* like free() on "null" memory */ |
187 | } | 195 | } |
@@ -189,8 +197,9 @@ void nvgpu_dma_free(struct gk20a *g, struct nvgpu_mem *mem) | |||
189 | 197 | ||
190 | void nvgpu_dma_unmap_free(struct vm_gk20a *vm, struct nvgpu_mem *mem) | 198 | void nvgpu_dma_unmap_free(struct vm_gk20a *vm, struct nvgpu_mem *mem) |
191 | { | 199 | { |
192 | if (mem->gpu_va) | 200 | if (mem->gpu_va) { |
193 | nvgpu_gmmu_unmap(vm, mem, mem->gpu_va); | 201 | nvgpu_gmmu_unmap(vm, mem, mem->gpu_va); |
202 | } | ||
194 | mem->gpu_va = 0; | 203 | mem->gpu_va = 0; |
195 | 204 | ||
196 | nvgpu_dma_free(vm->mm->g, mem); | 205 | nvgpu_dma_free(vm->mm->g, mem); |