summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/common/mm
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/nvgpu/common/mm')
-rw-r--r--drivers/gpu/nvgpu/common/mm/gmmu.c4
-rw-r--r--drivers/gpu/nvgpu/common/mm/nvgpu_mem.c7
-rw-r--r--drivers/gpu/nvgpu/common/mm/page_allocator.c11
-rw-r--r--drivers/gpu/nvgpu/common/mm/vidmem.c4
4 files changed, 15 insertions, 11 deletions
diff --git a/drivers/gpu/nvgpu/common/mm/gmmu.c b/drivers/gpu/nvgpu/common/mm/gmmu.c
index 3b57e781..44e540dc 100644
--- a/drivers/gpu/nvgpu/common/mm/gmmu.c
+++ b/drivers/gpu/nvgpu/common/mm/gmmu.c
@@ -543,7 +543,7 @@ static int __nvgpu_gmmu_do_update_page_table(struct vm_gk20a *vm,
543 } 543 }
544 544
545 phys_addr = g->ops.mm.gpu_phys_addr(g, attrs, 545 phys_addr = g->ops.mm.gpu_phys_addr(g, attrs,
546 nvgpu_sgt_get_phys(sgt, sgl)) + space_to_skip; 546 nvgpu_sgt_get_phys(g, sgt, sgl)) + space_to_skip;
547 chunk_length = min(length, 547 chunk_length = min(length,
548 nvgpu_sgt_get_length(sgt, sgl) - space_to_skip); 548 nvgpu_sgt_get_length(sgt, sgl) - space_to_skip);
549 549
@@ -629,7 +629,7 @@ static int __nvgpu_gmmu_update_page_table(struct vm_gk20a *vm,
629 sgt ? "MAP" : "UNMAP", 629 sgt ? "MAP" : "UNMAP",
630 virt_addr, 630 virt_addr,
631 length, 631 length,
632 sgt ? nvgpu_sgt_get_phys(sgt, sgt->sgl) : 0, 632 sgt ? nvgpu_sgt_get_phys(g, sgt, sgt->sgl) : 0,
633 space_to_skip, 633 space_to_skip,
634 page_size >> 10, 634 page_size >> 10,
635 nvgpu_gmmu_perm_str(attrs->rw_flag), 635 nvgpu_gmmu_perm_str(attrs->rw_flag),
diff --git a/drivers/gpu/nvgpu/common/mm/nvgpu_mem.c b/drivers/gpu/nvgpu/common/mm/nvgpu_mem.c
index 2b32d869..4def4938 100644
--- a/drivers/gpu/nvgpu/common/mm/nvgpu_mem.c
+++ b/drivers/gpu/nvgpu/common/mm/nvgpu_mem.c
@@ -81,9 +81,10 @@ struct nvgpu_sgl *nvgpu_sgt_get_next(struct nvgpu_sgt *sgt,
81 return sgt->ops->sgl_next(sgl); 81 return sgt->ops->sgl_next(sgl);
82} 82}
83 83
84u64 nvgpu_sgt_get_phys(struct nvgpu_sgt *sgt, struct nvgpu_sgl *sgl) 84u64 nvgpu_sgt_get_phys(struct gk20a *g, struct nvgpu_sgt *sgt,
85 struct nvgpu_sgl *sgl)
85{ 86{
86 return sgt->ops->sgl_phys(sgl); 87 return sgt->ops->sgl_phys(g, sgl);
87} 88}
88 89
89u64 nvgpu_sgt_get_dma(struct nvgpu_sgt *sgt, struct nvgpu_sgl *sgl) 90u64 nvgpu_sgt_get_dma(struct nvgpu_sgt *sgt, struct nvgpu_sgl *sgl)
@@ -156,7 +157,7 @@ u64 nvgpu_sgt_alignment(struct gk20a *g, struct nvgpu_sgt *sgt)
156 * of the SGT. 157 * of the SGT.
157 */ 158 */
158 nvgpu_sgt_for_each_sgl(sgl, sgt) { 159 nvgpu_sgt_for_each_sgl(sgl, sgt) {
159 chunk_align = 1ULL << __ffs(nvgpu_sgt_get_phys(sgt, sgl) | 160 chunk_align = 1ULL << __ffs(nvgpu_sgt_get_phys(g, sgt, sgl) |
160 nvgpu_sgt_get_length(sgt, sgl)); 161 nvgpu_sgt_get_length(sgt, sgl));
161 162
162 if (align) 163 if (align)
diff --git a/drivers/gpu/nvgpu/common/mm/page_allocator.c b/drivers/gpu/nvgpu/common/mm/page_allocator.c
index 13ccc48b..773d33ef 100644
--- a/drivers/gpu/nvgpu/common/mm/page_allocator.c
+++ b/drivers/gpu/nvgpu/common/mm/page_allocator.c
@@ -160,7 +160,7 @@ static struct nvgpu_sgl *nvgpu_page_alloc_sgl_next(struct nvgpu_sgl *sgl)
160 return (struct nvgpu_sgl *)sgl_impl->next; 160 return (struct nvgpu_sgl *)sgl_impl->next;
161} 161}
162 162
163static u64 nvgpu_page_alloc_sgl_phys(struct nvgpu_sgl *sgl) 163static u64 nvgpu_page_alloc_sgl_phys(struct gk20a *g, struct nvgpu_sgl *sgl)
164{ 164{
165 struct nvgpu_mem_sgl *sgl_impl = (struct nvgpu_mem_sgl *)sgl; 165 struct nvgpu_mem_sgl *sgl_impl = (struct nvgpu_mem_sgl *)sgl;
166 166
@@ -231,11 +231,12 @@ static void __nvgpu_free_pages(struct nvgpu_page_allocator *a,
231 bool free_buddy_alloc) 231 bool free_buddy_alloc)
232{ 232{
233 struct nvgpu_sgl *sgl = alloc->sgt.sgl; 233 struct nvgpu_sgl *sgl = alloc->sgt.sgl;
234 struct gk20a *g = a->owner->g;
234 235
235 if (free_buddy_alloc) { 236 if (free_buddy_alloc) {
236 while (sgl) { 237 while (sgl) {
237 nvgpu_free(&a->source_allocator, 238 nvgpu_free(&a->source_allocator,
238 nvgpu_sgt_get_phys(&alloc->sgt, sgl)); 239 nvgpu_sgt_get_phys(g, &alloc->sgt, sgl));
239 sgl = nvgpu_sgt_get_next(&alloc->sgt, sgl); 240 sgl = nvgpu_sgt_get_next(&alloc->sgt, sgl);
240 } 241 }
241 } 242 }
@@ -615,6 +616,7 @@ fail:
615static struct nvgpu_page_alloc *__nvgpu_alloc_pages( 616static struct nvgpu_page_alloc *__nvgpu_alloc_pages(
616 struct nvgpu_page_allocator *a, u64 len) 617 struct nvgpu_page_allocator *a, u64 len)
617{ 618{
619 struct gk20a *g = a->owner->g;
618 struct nvgpu_page_alloc *alloc = NULL; 620 struct nvgpu_page_alloc *alloc = NULL;
619 struct nvgpu_sgl *sgl; 621 struct nvgpu_sgl *sgl;
620 u64 pages; 622 u64 pages;
@@ -635,7 +637,7 @@ static struct nvgpu_page_alloc *__nvgpu_alloc_pages(
635 while (sgl) { 637 while (sgl) {
636 palloc_dbg(a, " Chunk %2d: 0x%010llx + 0x%llx", 638 palloc_dbg(a, " Chunk %2d: 0x%010llx + 0x%llx",
637 i++, 639 i++,
638 nvgpu_sgt_get_phys(&alloc->sgt, sgl), 640 nvgpu_sgt_get_phys(g, &alloc->sgt, sgl),
639 nvgpu_sgt_get_length(&alloc->sgt, sgl)); 641 nvgpu_sgt_get_length(&alloc->sgt, sgl));
640 sgl = nvgpu_sgt_get_next(&alloc->sgt, sgl); 642 sgl = nvgpu_sgt_get_next(&alloc->sgt, sgl);
641 } 643 }
@@ -779,6 +781,7 @@ static u64 nvgpu_page_alloc_fixed(struct nvgpu_allocator *__a,
779 struct nvgpu_page_allocator *a = page_allocator(__a); 781 struct nvgpu_page_allocator *a = page_allocator(__a);
780 struct nvgpu_page_alloc *alloc = NULL; 782 struct nvgpu_page_alloc *alloc = NULL;
781 struct nvgpu_sgl *sgl; 783 struct nvgpu_sgl *sgl;
784 struct gk20a *g = a->owner->g;
782 u64 aligned_len, pages; 785 u64 aligned_len, pages;
783 int i = 0; 786 int i = 0;
784 787
@@ -802,7 +805,7 @@ static u64 nvgpu_page_alloc_fixed(struct nvgpu_allocator *__a,
802 while (sgl) { 805 while (sgl) {
803 palloc_dbg(a, " Chunk %2d: 0x%010llx + 0x%llx", 806 palloc_dbg(a, " Chunk %2d: 0x%010llx + 0x%llx",
804 i++, 807 i++,
805 nvgpu_sgt_get_phys(&alloc->sgt, sgl), 808 nvgpu_sgt_get_phys(g, &alloc->sgt, sgl),
806 nvgpu_sgt_get_length(&alloc->sgt, sgl)); 809 nvgpu_sgt_get_length(&alloc->sgt, sgl));
807 sgl = nvgpu_sgt_get_next(&alloc->sgt, sgl); 810 sgl = nvgpu_sgt_get_next(&alloc->sgt, sgl);
808 } 811 }
diff --git a/drivers/gpu/nvgpu/common/mm/vidmem.c b/drivers/gpu/nvgpu/common/mm/vidmem.c
index e4137090..f534f45c 100644
--- a/drivers/gpu/nvgpu/common/mm/vidmem.c
+++ b/drivers/gpu/nvgpu/common/mm/vidmem.c
@@ -430,7 +430,7 @@ int nvgpu_vidmem_clear(struct gk20a *g, struct nvgpu_mem *mem)
430 err = gk20a_ce_execute_ops(g, 430 err = gk20a_ce_execute_ops(g,
431 g->mm.vidmem.ce_ctx_id, 431 g->mm.vidmem.ce_ctx_id,
432 0, 432 0,
433 nvgpu_sgt_get_phys(&alloc->sgt, sgl), 433 nvgpu_sgt_get_phys(g, &alloc->sgt, sgl),
434 nvgpu_sgt_get_length(&alloc->sgt, sgl), 434 nvgpu_sgt_get_length(&alloc->sgt, sgl),
435 0x00000000, 435 0x00000000,
436 NVGPU_CE_DST_LOCATION_LOCAL_FB, 436 NVGPU_CE_DST_LOCATION_LOCAL_FB,
@@ -445,7 +445,7 @@ int nvgpu_vidmem_clear(struct gk20a *g, struct nvgpu_mem *mem)
445 } 445 }
446 446
447 vidmem_dbg(g, " > [0x%llx +0x%llx]", 447 vidmem_dbg(g, " > [0x%llx +0x%llx]",
448 nvgpu_sgt_get_phys(&alloc->sgt, sgl), 448 nvgpu_sgt_get_phys(g, &alloc->sgt, sgl),
449 nvgpu_sgt_get_length(&alloc->sgt, sgl)); 449 nvgpu_sgt_get_length(&alloc->sgt, sgl));
450 450
451 gk20a_last_fence = gk20a_fence_out; 451 gk20a_last_fence = gk20a_fence_out;