diff options
author | Sami Kiminki <skiminki@nvidia.com> | 2015-04-20 11:12:22 -0400 |
---|---|---|
committer | Terje Bergstrom <tbergstrom@nvidia.com> | 2015-06-30 11:35:23 -0400 |
commit | e7ba93fefbc4df9663302d240f9fbd5967a75a3c (patch) | |
tree | e38de3af69153d860d9cb666fb30be262321b198 /drivers/gpu/nvgpu/gk20a/gk20a.h | |
parent | ae7b988b0d8767cfbc2cffe4c7ec8757e4dd94a6 (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.h | 6 |
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); |