]> rtime.felk.cvut.cz Git - sojka/nv-tegra/linux-3.10.git/commitdiff
gpu: nvgpu: Add comptag offset to part mappings
authorTerje Bergstrom <tbergstrom@nvidia.com>
Tue, 24 Nov 2015 23:17:40 +0000 (15:17 -0800)
committermobile promotions <svcmobile_promotions@nvidia.com>
Wed, 16 Dec 2015 04:58:00 +0000 (20:58 -0800)
Add offset to comptags when mapping partial buffers.

Bug 1704834

Change-Id: I3405b465bb1373bcc79eb5ecbd93dd1b866abfb4
Signed-off-by: Terje Bergstrom <tbergstrom@nvidia.com>
(cherry-picked from commit 19b6e48ce0536b6716fd4e680bacefff0efec383)
Reviewed-on: http://git-master/r/922044
Reviewed-by: Automatic_Commit_Validation_User
drivers/gpu/nvgpu/gk20a/mm_gk20a.c

index 0712312d232ac5adbeb9c4f29c54a21f0a04ac63..42d4caf0192100f06b19cf94009606bddccee7b7 100644 (file)
@@ -1463,6 +1463,7 @@ u64 gk20a_vm_map(struct vm_gk20a *vm,
        u64 ctag_map_win_size = 0;
        u32 ctag_map_win_ctagline = 0;
        struct vm_reserved_va_node *va_node = NULL;
+       u32 ctag_offset;
 
        if (user_mapped && vm->userspace_managed &&
            !(flags & NVGPU_AS_MAP_BUFFER_FLAGS_FIXED_OFFSET)) {
@@ -1632,6 +1633,15 @@ u64 gk20a_vm_map(struct vm_gk20a *vm,
        bfr.ctag_allocated_lines = comptags.allocated_lines;
        bfr.ctag_user_mappable = comptags.user_mappable;
 
+       /*
+        * Calculate comptag index for this mapping. Differs in
+        * case of partial mapping.
+        */
+       ctag_offset = comptags.offset;
+       if (ctag_offset)
+               ctag_offset += buffer_offset >>
+                              ilog2(g->ops.fb.compression_page_size(g));
+
        /* update gmmu ptes */
        map_offset = g->ops.mm.gmmu_map(vm, map_offset,
                                        bfr.sgt,
@@ -1639,7 +1649,7 @@ u64 gk20a_vm_map(struct vm_gk20a *vm,
                                        mapping_size,
                                        bfr.pgsz_idx,
                                        bfr.kind_v,
-                                       bfr.ctag_offset,
+                                       ctag_offset,
                                        flags, rw_flag,
                                        clear_ctags,
                                        false,