summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/gpu/nvgpu/common/mm/gmmu.c2
-rw-r--r--drivers/gpu/nvgpu/gp10b/mm_gp10b.c9
-rw-r--r--drivers/gpu/nvgpu/include/nvgpu/gmmu.h2
-rw-r--r--include/uapi/linux/nvgpu-t18x.h6
-rw-r--r--include/uapi/linux/nvgpu.h1
5 files changed, 11 insertions, 9 deletions
diff --git a/drivers/gpu/nvgpu/common/mm/gmmu.c b/drivers/gpu/nvgpu/common/mm/gmmu.c
index 602dfb3b..55fbcd3f 100644
--- a/drivers/gpu/nvgpu/common/mm/gmmu.c
+++ b/drivers/gpu/nvgpu/common/mm/gmmu.c
@@ -747,6 +747,7 @@ u64 gk20a_locked_gmmu_map(struct vm_gk20a *vm,
747 .rw_flag = rw_flag, 747 .rw_flag = rw_flag,
748 .sparse = sparse, 748 .sparse = sparse,
749 .priv = priv, 749 .priv = priv,
750 .coherent = flags & NVGPU_AS_MAP_BUFFER_FLAGS_IO_COHERENT,
750 .valid = !(flags & NVGPU_AS_MAP_BUFFER_FLAGS_UNMAPPED_PTE), 751 .valid = !(flags & NVGPU_AS_MAP_BUFFER_FLAGS_UNMAPPED_PTE),
751 .aperture = aperture 752 .aperture = aperture
752 }; 753 };
@@ -805,6 +806,7 @@ void gk20a_locked_gmmu_unmap(struct vm_gk20a *vm,
805 .rw_flag = rw_flag, 806 .rw_flag = rw_flag,
806 .sparse = sparse, 807 .sparse = sparse,
807 .priv = 0, 808 .priv = 0,
809 .coherent = 0,
808 .valid = 0, 810 .valid = 0,
809 .aperture = APERTURE_INVALID, 811 .aperture = APERTURE_INVALID,
810 }; 812 };
diff --git a/drivers/gpu/nvgpu/gp10b/mm_gp10b.c b/drivers/gpu/nvgpu/gp10b/mm_gp10b.c
index 590dd960..bdc30143 100644
--- a/drivers/gpu/nvgpu/gp10b/mm_gp10b.c
+++ b/drivers/gpu/nvgpu/gp10b/mm_gp10b.c
@@ -230,9 +230,12 @@ static void __update_pte(struct vm_gk20a *vm,
230 u32 pte_addr = attrs->aperture == APERTURE_SYSMEM ? 230 u32 pte_addr = attrs->aperture == APERTURE_SYSMEM ?
231 gmmu_new_pte_address_sys_f(phys_shifted) : 231 gmmu_new_pte_address_sys_f(phys_shifted) :
232 gmmu_new_pte_address_vid_f(phys_shifted); 232 gmmu_new_pte_address_vid_f(phys_shifted);
233 u32 pte_tgt = __nvgpu_aperture_mask(g, attrs->aperture, 233 u32 pte_tgt = __nvgpu_aperture_mask(g,
234 gmmu_new_pte_aperture_sys_mem_ncoh_f(), 234 attrs->aperture,
235 gmmu_new_pte_aperture_video_memory_f()); 235 attrs->coherent ?
236 gmmu_new_pte_aperture_sys_mem_coh_f() :
237 gmmu_new_pte_aperture_sys_mem_ncoh_f(),
238 gmmu_new_pte_aperture_video_memory_f());
236 239
237 pte_w[0] = pte_valid | pte_addr | pte_tgt; 240 pte_w[0] = pte_valid | pte_addr | pte_tgt;
238 241
diff --git a/drivers/gpu/nvgpu/include/nvgpu/gmmu.h b/drivers/gpu/nvgpu/include/nvgpu/gmmu.h
index eff87c31..47af2f75 100644
--- a/drivers/gpu/nvgpu/include/nvgpu/gmmu.h
+++ b/drivers/gpu/nvgpu/include/nvgpu/gmmu.h
@@ -149,6 +149,7 @@ struct nvgpu_gmmu_pd {
149 * rw_flag: Flag from enum gk20a_mem_rw_flag 149 * rw_flag: Flag from enum gk20a_mem_rw_flag
150 * sparse: Set if the mapping should be sparse. 150 * sparse: Set if the mapping should be sparse.
151 * priv: Privilidged mapping. 151 * priv: Privilidged mapping.
152 * coherent: Set if the mapping should be IO coherent.
152 * valid: Set if the PTE should be marked valid. 153 * valid: Set if the PTE should be marked valid.
153 * aperture: VIDMEM or SYSMEM. 154 * aperture: VIDMEM or SYSMEM.
154 * debug: When set print debugging info. 155 * debug: When set print debugging info.
@@ -166,6 +167,7 @@ struct nvgpu_gmmu_attrs {
166 int rw_flag; 167 int rw_flag;
167 bool sparse; 168 bool sparse;
168 bool priv; 169 bool priv;
170 bool coherent;
169 bool valid; 171 bool valid;
170 enum nvgpu_aperture aperture; 172 enum nvgpu_aperture aperture;
171 bool debug; 173 bool debug;
diff --git a/include/uapi/linux/nvgpu-t18x.h b/include/uapi/linux/nvgpu-t18x.h
index 16cbd81e..59db77c7 100644
--- a/include/uapi/linux/nvgpu-t18x.h
+++ b/include/uapi/linux/nvgpu-t18x.h
@@ -25,12 +25,6 @@
25#define _UAPI__LINUX_NVGPU_T18X_IOCTL_H_ 25#define _UAPI__LINUX_NVGPU_T18X_IOCTL_H_
26 26
27/* 27/*
28 * this flag is used in struct nvgpu_as_map_buffer_ex_args
29 * to specify IO coherence
30 */
31#define NVGPU_AS_MAP_BUFFER_FLAGS_IO_COHERENT (1 << 4)
32
33/*
34 * this flag is used in struct nvgpu_alloc_gpfifo_args 28 * this flag is used in struct nvgpu_alloc_gpfifo_args
35 * to enable re-playable faults for that channel 29 * to enable re-playable faults for that channel
36 */ 30 */
diff --git a/include/uapi/linux/nvgpu.h b/include/uapi/linux/nvgpu.h
index 22687eb5..6c113764 100644
--- a/include/uapi/linux/nvgpu.h
+++ b/include/uapi/linux/nvgpu.h
@@ -1744,6 +1744,7 @@ struct nvgpu_as_map_buffer_args {
1744 __u32 flags; /* in/out */ 1744 __u32 flags; /* in/out */
1745#define NVGPU_AS_MAP_BUFFER_FLAGS_FIXED_OFFSET (1 << 0) 1745#define NVGPU_AS_MAP_BUFFER_FLAGS_FIXED_OFFSET (1 << 0)
1746#define NVGPU_AS_MAP_BUFFER_FLAGS_CACHEABLE (1 << 2) 1746#define NVGPU_AS_MAP_BUFFER_FLAGS_CACHEABLE (1 << 2)
1747#define NVGPU_AS_MAP_BUFFER_FLAGS_IO_COHERENT (1 << 4)
1747#define NVGPU_AS_MAP_BUFFER_FLAGS_UNMAPPED_PTE (1 << 5) 1748#define NVGPU_AS_MAP_BUFFER_FLAGS_UNMAPPED_PTE (1 << 5)
1748#define NVGPU_AS_MAP_BUFFER_FLAGS_MAPPABLE_COMPBITS (1 << 6) 1749#define NVGPU_AS_MAP_BUFFER_FLAGS_MAPPABLE_COMPBITS (1 << 6)
1749 __u32 reserved; /* in */ 1750 __u32 reserved; /* in */