summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/common
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/nvgpu/common')
-rw-r--r--drivers/gpu/nvgpu/common/linux/vgpu/gm20b/vgpu_hal_gm20b.c1
-rw-r--r--drivers/gpu/nvgpu/common/linux/vgpu/gp10b/vgpu_hal_gp10b.c1
-rw-r--r--drivers/gpu/nvgpu/common/linux/vgpu/gv11b/vgpu_hal_gv11b.c1
-rw-r--r--drivers/gpu/nvgpu/common/mm/vm.c23
4 files changed, 26 insertions, 0 deletions
diff --git a/drivers/gpu/nvgpu/common/linux/vgpu/gm20b/vgpu_hal_gm20b.c b/drivers/gpu/nvgpu/common/linux/vgpu/gm20b/vgpu_hal_gm20b.c
index 0e560981..6f50dbb8 100644
--- a/drivers/gpu/nvgpu/common/linux/vgpu/gm20b/vgpu_hal_gm20b.c
+++ b/drivers/gpu/nvgpu/common/linux/vgpu/gm20b/vgpu_hal_gm20b.c
@@ -195,6 +195,7 @@ static const struct gpu_ops vgpu_gm20b_ops = {
195 gm20b_fb_set_use_full_comp_tag_line, 195 gm20b_fb_set_use_full_comp_tag_line,
196 .compression_page_size = gm20b_fb_compression_page_size, 196 .compression_page_size = gm20b_fb_compression_page_size,
197 .compressible_page_size = gm20b_fb_compressible_page_size, 197 .compressible_page_size = gm20b_fb_compressible_page_size,
198 .compression_align_mask = gm20b_fb_compression_align_mask,
198 .vpr_info_fetch = gm20b_fb_vpr_info_fetch, 199 .vpr_info_fetch = gm20b_fb_vpr_info_fetch,
199 .dump_vpr_wpr_info = gm20b_fb_dump_vpr_wpr_info, 200 .dump_vpr_wpr_info = gm20b_fb_dump_vpr_wpr_info,
200 .read_wpr_info = gm20b_fb_read_wpr_info, 201 .read_wpr_info = gm20b_fb_read_wpr_info,
diff --git a/drivers/gpu/nvgpu/common/linux/vgpu/gp10b/vgpu_hal_gp10b.c b/drivers/gpu/nvgpu/common/linux/vgpu/gp10b/vgpu_hal_gp10b.c
index acd0ad5d..7c376396 100644
--- a/drivers/gpu/nvgpu/common/linux/vgpu/gp10b/vgpu_hal_gp10b.c
+++ b/drivers/gpu/nvgpu/common/linux/vgpu/gp10b/vgpu_hal_gp10b.c
@@ -223,6 +223,7 @@ static const struct gpu_ops vgpu_gp10b_ops = {
223 gm20b_fb_set_use_full_comp_tag_line, 223 gm20b_fb_set_use_full_comp_tag_line,
224 .compression_page_size = gp10b_fb_compression_page_size, 224 .compression_page_size = gp10b_fb_compression_page_size,
225 .compressible_page_size = gp10b_fb_compressible_page_size, 225 .compressible_page_size = gp10b_fb_compressible_page_size,
226 .compression_align_mask = gm20b_fb_compression_align_mask,
226 .vpr_info_fetch = gm20b_fb_vpr_info_fetch, 227 .vpr_info_fetch = gm20b_fb_vpr_info_fetch,
227 .dump_vpr_wpr_info = gm20b_fb_dump_vpr_wpr_info, 228 .dump_vpr_wpr_info = gm20b_fb_dump_vpr_wpr_info,
228 .read_wpr_info = gm20b_fb_read_wpr_info, 229 .read_wpr_info = gm20b_fb_read_wpr_info,
diff --git a/drivers/gpu/nvgpu/common/linux/vgpu/gv11b/vgpu_hal_gv11b.c b/drivers/gpu/nvgpu/common/linux/vgpu/gv11b/vgpu_hal_gv11b.c
index a470377c..7d60bfb2 100644
--- a/drivers/gpu/nvgpu/common/linux/vgpu/gv11b/vgpu_hal_gv11b.c
+++ b/drivers/gpu/nvgpu/common/linux/vgpu/gv11b/vgpu_hal_gv11b.c
@@ -263,6 +263,7 @@ static const struct gpu_ops vgpu_gv11b_ops = {
263 gm20b_fb_set_use_full_comp_tag_line, 263 gm20b_fb_set_use_full_comp_tag_line,
264 .compression_page_size = gp10b_fb_compression_page_size, 264 .compression_page_size = gp10b_fb_compression_page_size,
265 .compressible_page_size = gp10b_fb_compressible_page_size, 265 .compressible_page_size = gp10b_fb_compressible_page_size,
266 .compression_align_mask = gm20b_fb_compression_align_mask,
266 .vpr_info_fetch = gm20b_fb_vpr_info_fetch, 267 .vpr_info_fetch = gm20b_fb_vpr_info_fetch,
267 .dump_vpr_wpr_info = gm20b_fb_dump_vpr_wpr_info, 268 .dump_vpr_wpr_info = gm20b_fb_dump_vpr_wpr_info,
268 .read_wpr_info = gm20b_fb_read_wpr_info, 269 .read_wpr_info = gm20b_fb_read_wpr_info,
diff --git a/drivers/gpu/nvgpu/common/mm/vm.c b/drivers/gpu/nvgpu/common/mm/vm.c
index 637632e0..f85089d5 100644
--- a/drivers/gpu/nvgpu/common/mm/vm.c
+++ b/drivers/gpu/nvgpu/common/mm/vm.c
@@ -847,6 +847,29 @@ struct nvgpu_mapped_buf *nvgpu_vm_map(struct vm_gk20a *vm,
847 goto clean_up; 847 goto clean_up;
848 } 848 }
849 849
850 if ((binfo.compr_kind != NVGPU_KIND_INVALID) &&
851 (flags & NVGPU_VM_MAP_FIXED_OFFSET)) {
852 /*
853 * Fixed-address compressible mapping is
854 * requested. Make sure we're respecting the alignment
855 * requirement for virtual addresses and buffer
856 * offsets.
857 *
858 * This check must be done before we may fall back to
859 * the incompressible kind.
860 */
861
862 const u64 offset_mask = g->ops.fb.compression_align_mask(g);
863
864 if ((map_addr & offset_mask) != (phys_offset & offset_mask)) {
865 nvgpu_log(g, gpu_dbg_map,
866 "Misaligned compressible-kind fixed-address "
867 "mapping");
868 err = -EINVAL;
869 goto clean_up;
870 }
871 }
872
850 if (binfo.compr_kind != NVGPU_KIND_INVALID) { 873 if (binfo.compr_kind != NVGPU_KIND_INVALID) {
851 struct gk20a_comptags comptags = { 0 }; 874 struct gk20a_comptags comptags = { 0 };
852 875