diff options
author | Konsta Holtta <kholtta@nvidia.com> | 2016-06-17 08:56:07 -0400 |
---|---|---|
committer | Terje Bergstrom <tbergstrom@nvidia.com> | 2016-07-06 06:34:23 -0400 |
commit | b8915ab5aabb02866019221c51d96f304658207f (patch) | |
tree | 16754368daa70c837dea7be8283cf0c5027b23f3 /drivers/gpu/nvgpu/gk20a/mm_gk20a.h | |
parent | 67fae6e547ca20c4171e1b3d0ad9d252c2e3c0ee (diff) |
gpu: nvgpu: support in-kernel vidmem mappings
Propagate the buffer aperture flag in gk20a_locked_gmmu_map up so that
buffers represented as a mem_desc and present in vidmem can be mapped to
gpu.
JIRA DNVGPU-18
JIRA DNVGPU-76
Change-Id: I46cf87e27229123016727339b9349d5e2c835b3e
Signed-off-by: Konsta Holtta <kholtta@nvidia.com>
Reviewed-on: http://git-master/r/1169308
GVS: Gerrit_Virtual_Submit
Reviewed-by: Terje Bergstrom <tbergstrom@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a/mm_gk20a.h')
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/mm_gk20a.h | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/mm_gk20a.h b/drivers/gpu/nvgpu/gk20a/mm_gk20a.h index a697e520..f87ba605 100644 --- a/drivers/gpu/nvgpu/gk20a/mm_gk20a.h +++ b/drivers/gpu/nvgpu/gk20a/mm_gk20a.h | |||
@@ -40,8 +40,13 @@ | |||
40 | outer_flush_range(pa, pa + (size_t)(size)); \ | 40 | outer_flush_range(pa, pa + (size_t)(size)); \ |
41 | } while (0) | 41 | } while (0) |
42 | 42 | ||
43 | /* | ||
44 | * Real location of a buffer - gk20a_aperture_mask() will deduce what will be | ||
45 | * told to the gpu about the aperture, but this flag designates where the | ||
46 | * memory actually was allocated from. | ||
47 | */ | ||
43 | enum gk20a_aperture { | 48 | enum gk20a_aperture { |
44 | APERTURE_INVALID, /* e.g., unallocated */ | 49 | APERTURE_INVALID, /* unallocated or N/A */ |
45 | APERTURE_SYSMEM, | 50 | APERTURE_SYSMEM, |
46 | APERTURE_VIDMEM | 51 | APERTURE_VIDMEM |
47 | }; | 52 | }; |
@@ -520,14 +525,16 @@ u64 gk20a_gmmu_map(struct vm_gk20a *vm, | |||
520 | u64 size, | 525 | u64 size, |
521 | u32 flags, | 526 | u32 flags, |
522 | int rw_flag, | 527 | int rw_flag, |
523 | bool priv); | 528 | bool priv, |
529 | enum gk20a_aperture aperture); | ||
524 | u64 gk20a_gmmu_fixed_map(struct vm_gk20a *vm, | 530 | u64 gk20a_gmmu_fixed_map(struct vm_gk20a *vm, |
525 | struct sg_table **sgt, | 531 | struct sg_table **sgt, |
526 | u64 addr, | 532 | u64 addr, |
527 | u64 size, | 533 | u64 size, |
528 | u32 flags, | 534 | u32 flags, |
529 | int rw_flag, | 535 | int rw_flag, |
530 | bool priv); | 536 | bool priv, |
537 | enum gk20a_aperture aperture); | ||
531 | 538 | ||
532 | int gk20a_gmmu_alloc_map(struct vm_gk20a *vm, | 539 | int gk20a_gmmu_alloc_map(struct vm_gk20a *vm, |
533 | size_t size, | 540 | size_t size, |
@@ -619,7 +626,8 @@ u64 gk20a_locked_gmmu_map(struct vm_gk20a *vm, | |||
619 | bool clear_ctags, | 626 | bool clear_ctags, |
620 | bool sparse, | 627 | bool sparse, |
621 | bool priv, | 628 | bool priv, |
622 | struct vm_gk20a_mapping_batch *batch); | 629 | struct vm_gk20a_mapping_batch *batch, |
630 | enum gk20a_aperture aperture); | ||
623 | 631 | ||
624 | void gk20a_gmmu_unmap(struct vm_gk20a *vm, | 632 | void gk20a_gmmu_unmap(struct vm_gk20a *vm, |
625 | u64 vaddr, | 633 | u64 vaddr, |