summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gk20a/gk20a.h
diff options
context:
space:
mode:
authorSami Kiminki <skiminki@nvidia.com>2015-04-20 11:12:22 -0400
committerTerje Bergstrom <tbergstrom@nvidia.com>2015-06-30 11:35:23 -0400
commite7ba93fefbc4df9663302d240f9fbd5967a75a3c (patch)
treee38de3af69153d860d9cb666fb30be262321b198 /drivers/gpu/nvgpu/gk20a/gk20a.h
parentae7b988b0d8767cfbc2cffe4c7ec8757e4dd94a6 (diff)
gpu: nvgpu: Initial MAP_BUFFER_BATCH implementation
Add batch support for mapping and unmapping. Batching essentially helps transform some per-map/unmap overhead to per-batch overhead, namely gk20a_busy()/gk20a_idle() calls, GPU L2 flushes, and GPU TLB invalidates. Batching with size 64 has been measured to yield >20x speed-up in low-level fixed-address mapping microbenchmarks. Bug 1614735 Bug 1623949 Change-Id: Ie22b9caea5a7c3fc68a968d1b7f8488dfce72085 Signed-off-by: Sami Kiminki <skiminki@nvidia.com> Reviewed-on: http://git-master/r/733231 (cherry picked from commit de4a7cfb93e8228a4a0c6a2815755a8df4531c91) Reviewed-on: http://git-master/r/763812 Reviewed-by: Terje Bergstrom <tbergstrom@nvidia.com> Tested-by: Terje Bergstrom <tbergstrom@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a/gk20a.h')
-rw-r--r--drivers/gpu/nvgpu/gk20a/gk20a.h6
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/gk20a.h b/drivers/gpu/nvgpu/gk20a/gk20a.h
index 9a183e44..fc2ed643 100644
--- a/drivers/gpu/nvgpu/gk20a/gk20a.h
+++ b/drivers/gpu/nvgpu/gk20a/gk20a.h
@@ -349,14 +349,16 @@ struct gpu_ops {
349 u32 flags, 349 u32 flags,
350 int rw_flag, 350 int rw_flag,
351 bool clear_ctags, 351 bool clear_ctags,
352 bool sparse); 352 bool sparse,
353 struct vm_gk20a_mapping_batch *batch);
353 void (*gmmu_unmap)(struct vm_gk20a *vm, 354 void (*gmmu_unmap)(struct vm_gk20a *vm,
354 u64 vaddr, 355 u64 vaddr,
355 u64 size, 356 u64 size,
356 int pgsz_idx, 357 int pgsz_idx,
357 bool va_allocated, 358 bool va_allocated,
358 int rw_flag, 359 int rw_flag,
359 bool sparse); 360 bool sparse,
361 struct vm_gk20a_mapping_batch *batch);
360 void (*vm_remove)(struct vm_gk20a *vm); 362 void (*vm_remove)(struct vm_gk20a *vm);
361 int (*vm_alloc_share)(struct gk20a_as_share *as_share, 363 int (*vm_alloc_share)(struct gk20a_as_share *as_share,
362 u32 flags); 364 u32 flags);