diff options
author | Konsta Holtta <kholtta@nvidia.com> | 2016-09-08 03:03:50 -0400 |
---|---|---|
committer | mobile promotions <svcmobile_promotions@nvidia.com> | 2016-09-15 15:23:53 -0400 |
commit | 51a7cdce32ecc830e13d67c0c8fdcd7ef6c6e38b (patch) | |
tree | c56a316badbea559e1b17adab17b34d954ec7c8c /drivers | |
parent | 1a63ca3a657fb65dfb8390aa7440f34d0b3d743b (diff) |
gpu: nvgpu: fall back to sysmem for generic alloc-maps
In gk20a_gmmu_alloc_map_attr(), which is used for in-kernel allocations
combined with immediate gmmu map, fall back to attempting to allocate
sysmem when vidmem allocation fails.
Bug 1809939
Change-Id: I4ec4fbf93d41fd9681166b47b3ecad24b51ea274
Signed-off-by: Konsta Holtta <kholtta@nvidia.com>
Reviewed-on: http://git-master/r/1216814
(cherry picked from commit a9929682f1f356f7e8a652a2cec8ed73cc492448)
Reviewed-on: http://git-master/r/1217688
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/mm_gk20a.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/mm_gk20a.c b/drivers/gpu/nvgpu/gk20a/mm_gk20a.c index 4005d5f4..1b052a20 100644 --- a/drivers/gpu/nvgpu/gk20a/mm_gk20a.c +++ b/drivers/gpu/nvgpu/gk20a/mm_gk20a.c | |||
@@ -3203,8 +3203,16 @@ int gk20a_gmmu_alloc_map(struct vm_gk20a *vm, size_t size, | |||
3203 | int gk20a_gmmu_alloc_map_attr(struct vm_gk20a *vm, | 3203 | int gk20a_gmmu_alloc_map_attr(struct vm_gk20a *vm, |
3204 | enum dma_attr attr, size_t size, struct mem_desc *mem) | 3204 | enum dma_attr attr, size_t size, struct mem_desc *mem) |
3205 | { | 3205 | { |
3206 | if (vm->mm->vidmem_is_vidmem) | 3206 | if (vm->mm->vidmem_is_vidmem) { |
3207 | return gk20a_gmmu_alloc_map_attr_vid(vm, 0, size, mem); | 3207 | int err = gk20a_gmmu_alloc_map_attr_vid(vm, 0, size, mem); |
3208 | |||
3209 | if (!err) | ||
3210 | return 0; | ||
3211 | /* | ||
3212 | * Fall back to sysmem (which may then also fail) in case | ||
3213 | * vidmem is exhausted. | ||
3214 | */ | ||
3215 | } | ||
3208 | 3216 | ||
3209 | return gk20a_gmmu_alloc_map_attr_sys(vm, 0, size, mem); | 3217 | return gk20a_gmmu_alloc_map_attr_sys(vm, 0, size, mem); |
3210 | } | 3218 | } |