diff options
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a/mm_gk20a.c')
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/mm_gk20a.c | 36 |
1 files changed, 30 insertions, 6 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/mm_gk20a.c b/drivers/gpu/nvgpu/gk20a/mm_gk20a.c index 5e87ae25..d7ace0d8 100644 --- a/drivers/gpu/nvgpu/gk20a/mm_gk20a.c +++ b/drivers/gpu/nvgpu/gk20a/mm_gk20a.c | |||
@@ -713,7 +713,7 @@ static void gk20a_remove_mm_support(struct mm_gk20a *mm) | |||
713 | 713 | ||
714 | static int gk20a_alloc_sysmem_flush(struct gk20a *g) | 714 | static int gk20a_alloc_sysmem_flush(struct gk20a *g) |
715 | { | 715 | { |
716 | return gk20a_gmmu_alloc(g, SZ_4K, &g->mm.sysmem_flush); | 716 | return gk20a_gmmu_alloc_sys(g, SZ_4K, &g->mm.sysmem_flush); |
717 | } | 717 | } |
718 | 718 | ||
719 | static void gk20a_init_pramin(struct mm_gk20a *mm) | 719 | static void gk20a_init_pramin(struct mm_gk20a *mm) |
@@ -976,9 +976,9 @@ static int alloc_gmmu_pages(struct vm_gk20a *vm, u32 order, | |||
976 | * default. | 976 | * default. |
977 | */ | 977 | */ |
978 | if (IS_ENABLED(CONFIG_ARM64)) | 978 | if (IS_ENABLED(CONFIG_ARM64)) |
979 | err = gk20a_gmmu_alloc(g, len, &entry->mem); | 979 | err = gk20a_gmmu_alloc_sys(g, len, &entry->mem); |
980 | else | 980 | else |
981 | err = gk20a_gmmu_alloc_attr(g, DMA_ATTR_NO_KERNEL_MAPPING, | 981 | err = gk20a_gmmu_alloc_attr_sys(g, DMA_ATTR_NO_KERNEL_MAPPING, |
982 | len, &entry->mem); | 982 | len, &entry->mem); |
983 | 983 | ||
984 | 984 | ||
@@ -2363,9 +2363,17 @@ int gk20a_gmmu_alloc(struct gk20a *g, size_t size, struct mem_desc *mem) | |||
2363 | int gk20a_gmmu_alloc_attr(struct gk20a *g, enum dma_attr attr, size_t size, | 2363 | int gk20a_gmmu_alloc_attr(struct gk20a *g, enum dma_attr attr, size_t size, |
2364 | struct mem_desc *mem) | 2364 | struct mem_desc *mem) |
2365 | { | 2365 | { |
2366 | if (g->mm.vidmem_is_vidmem) | ||
2367 | return gk20a_gmmu_alloc_attr_vid(g, attr, size, mem); | ||
2368 | |||
2366 | return gk20a_gmmu_alloc_attr_sys(g, attr, size, mem); | 2369 | return gk20a_gmmu_alloc_attr_sys(g, attr, size, mem); |
2367 | } | 2370 | } |
2368 | 2371 | ||
2372 | int gk20a_gmmu_alloc_sys(struct gk20a *g, size_t size, struct mem_desc *mem) | ||
2373 | { | ||
2374 | return gk20a_gmmu_alloc_attr_sys(g, 0, size, mem); | ||
2375 | } | ||
2376 | |||
2369 | int gk20a_gmmu_alloc_attr_sys(struct gk20a *g, enum dma_attr attr, | 2377 | int gk20a_gmmu_alloc_attr_sys(struct gk20a *g, enum dma_attr attr, |
2370 | size_t size, struct mem_desc *mem) | 2378 | size_t size, struct mem_desc *mem) |
2371 | { | 2379 | { |
@@ -2594,7 +2602,8 @@ u32 gk20a_aperture_mask(struct gk20a *g, struct mem_desc *mem, | |||
2594 | sysmem_mask, vidmem_mask); | 2602 | sysmem_mask, vidmem_mask); |
2595 | } | 2603 | } |
2596 | 2604 | ||
2597 | int gk20a_gmmu_alloc_map(struct vm_gk20a *vm, size_t size, struct mem_desc *mem) | 2605 | int gk20a_gmmu_alloc_map(struct vm_gk20a *vm, size_t size, |
2606 | struct mem_desc *mem) | ||
2598 | { | 2607 | { |
2599 | return gk20a_gmmu_alloc_map_attr(vm, 0, size, mem); | 2608 | return gk20a_gmmu_alloc_map_attr(vm, 0, size, mem); |
2600 | } | 2609 | } |
@@ -2602,7 +2611,22 @@ int gk20a_gmmu_alloc_map(struct vm_gk20a *vm, size_t size, struct mem_desc *mem) | |||
2602 | int gk20a_gmmu_alloc_map_attr(struct vm_gk20a *vm, | 2611 | int gk20a_gmmu_alloc_map_attr(struct vm_gk20a *vm, |
2603 | enum dma_attr attr, size_t size, struct mem_desc *mem) | 2612 | enum dma_attr attr, size_t size, struct mem_desc *mem) |
2604 | { | 2613 | { |
2605 | int err = gk20a_gmmu_alloc_attr(vm->mm->g, attr, size, mem); | 2614 | if (vm->mm->vidmem_is_vidmem) |
2615 | return gk20a_gmmu_alloc_map_attr_vid(vm, 0, size, mem); | ||
2616 | |||
2617 | return gk20a_gmmu_alloc_map_attr_sys(vm, 0, size, mem); | ||
2618 | } | ||
2619 | |||
2620 | int gk20a_gmmu_alloc_map_sys(struct vm_gk20a *vm, size_t size, | ||
2621 | struct mem_desc *mem) | ||
2622 | { | ||
2623 | return gk20a_gmmu_alloc_map_attr_sys(vm, 0, size, mem); | ||
2624 | } | ||
2625 | |||
2626 | int gk20a_gmmu_alloc_map_attr_sys(struct vm_gk20a *vm, | ||
2627 | enum dma_attr attr, size_t size, struct mem_desc *mem) | ||
2628 | { | ||
2629 | int err = gk20a_gmmu_alloc_attr_sys(vm->mm->g, attr, size, mem); | ||
2606 | 2630 | ||
2607 | if (err) | 2631 | if (err) |
2608 | return err; | 2632 | return err; |
@@ -3983,7 +4007,7 @@ int gk20a_alloc_inst_block(struct gk20a *g, struct mem_desc *inst_block) | |||
3983 | 4007 | ||
3984 | gk20a_dbg_fn(""); | 4008 | gk20a_dbg_fn(""); |
3985 | 4009 | ||
3986 | err = gk20a_gmmu_alloc(g, ram_in_alloc_size_v(), inst_block); | 4010 | err = gk20a_gmmu_alloc_sys(g, ram_in_alloc_size_v(), inst_block); |
3987 | if (err) { | 4011 | if (err) { |
3988 | gk20a_err(dev, "%s: memory allocation failed\n", __func__); | 4012 | gk20a_err(dev, "%s: memory allocation failed\n", __func__); |
3989 | return err; | 4013 | return err; |