diff options
author | Sami Kiminki <skiminki@nvidia.com> | 2017-11-02 16:03:15 -0400 |
---|---|---|
committer | mobile promotions <svcmobile_promotions@nvidia.com> | 2017-11-10 11:38:19 -0500 |
commit | cefabe7eb1f1f1dba9692e21ab4f1b88b9163489 (patch) | |
tree | b0f4e6ce64cd408e780925b8b3365b45805b7d95 /drivers/gpu/nvgpu | |
parent | b584bf8aa814d026498ebcee23480d1963338e47 (diff) |
gpu: nvgpu: Remove PTE kind logic
Since NVGPU_AS_MAP_BUFFER_FLAGS_DIRECT_KIND_CTRL was made mandatory,
kernel does not need to know the details about the PTE kinds
anymore. Thus, we can remove the kind_gk20a.h header and the code
related to kind table setup, as well as simplify buffer mapping code
a bit.
Bug 1902982
Change-Id: Iaf798023c219a64fb0a84da09431c5ce4bc046eb
Signed-off-by: Sami Kiminki <skiminki@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/1560933
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu')
-rw-r--r-- | drivers/gpu/nvgpu/Makefile | 1 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/common/linux/ioctl_as.c | 15 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/common/linux/vm.c | 37 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/common/mm/vm.c | 124 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/fb_gk20a.c | 1 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/gr_gk20a.c | 1 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/kind_gk20a.c | 414 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/kind_gk20a.h | 90 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/mm_gk20a.c | 1 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/gm20b/fb_gm20b.c | 402 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/gm20b/fb_gm20b.h | 2 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/gm20b/hal_gm20b.c | 3 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/gp106/hal_gp106.c | 3 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/gp10b/fb_gp10b.c | 440 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/gp10b/fb_gp10b.h | 2 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/gp10b/hal_gp10b.c | 3 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/include/nvgpu/linux/vm.h | 21 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/include/nvgpu/vm.h | 12 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/vgpu/gm20b/vgpu_hal_gm20b.c | 3 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/vgpu/gp10b/vgpu_hal_gp10b.c | 3 |
20 files changed, 49 insertions, 1529 deletions
diff --git a/drivers/gpu/nvgpu/Makefile b/drivers/gpu/nvgpu/Makefile index 138068c1..f3338dc2 100644 --- a/drivers/gpu/nvgpu/Makefile +++ b/drivers/gpu/nvgpu/Makefile | |||
@@ -93,7 +93,6 @@ nvgpu-y := \ | |||
93 | gk20a/dbg_gpu_gk20a.o \ | 93 | gk20a/dbg_gpu_gk20a.o \ |
94 | gk20a/regops_gk20a.o \ | 94 | gk20a/regops_gk20a.o \ |
95 | gk20a/gr_gk20a.o \ | 95 | gk20a/gr_gk20a.o \ |
96 | gk20a/kind_gk20a.o \ | ||
97 | gk20a/mm_gk20a.o \ | 96 | gk20a/mm_gk20a.o \ |
98 | gk20a/pmu_gk20a.o \ | 97 | gk20a/pmu_gk20a.o \ |
99 | gk20a/flcn_gk20a.o \ | 98 | gk20a/flcn_gk20a.o \ |
diff --git a/drivers/gpu/nvgpu/common/linux/ioctl_as.c b/drivers/gpu/nvgpu/common/linux/ioctl_as.c index 8a5318e4..f23dc53c 100644 --- a/drivers/gpu/nvgpu/common/linux/ioctl_as.c +++ b/drivers/gpu/nvgpu/common/linux/ioctl_as.c | |||
@@ -79,22 +79,19 @@ static int gk20a_as_ioctl_map_buffer_ex( | |||
79 | struct gk20a_as_share *as_share, | 79 | struct gk20a_as_share *as_share, |
80 | struct nvgpu_as_map_buffer_ex_args *args) | 80 | struct nvgpu_as_map_buffer_ex_args *args) |
81 | { | 81 | { |
82 | s16 compressible_kind; | ||
83 | s16 incompressible_kind; | ||
84 | |||
85 | gk20a_dbg_fn(""); | 82 | gk20a_dbg_fn(""); |
86 | 83 | ||
87 | if (args->flags & NVGPU_AS_MAP_BUFFER_FLAGS_DIRECT_KIND_CTRL) { | 84 | /* unsupported, direct kind control must be used */ |
88 | compressible_kind = args->compr_kind; | 85 | if (!(args->flags & NVGPU_AS_MAP_BUFFER_FLAGS_DIRECT_KIND_CTRL)) { |
89 | incompressible_kind = args->incompr_kind; | 86 | struct gk20a *g = as_share->vm->mm->g; |
90 | } else { | 87 | nvgpu_log_info(g, "Direct kind control must be requested"); |
91 | /* unsupported, direct kind control must be used */ | ||
92 | return -EINVAL; | 88 | return -EINVAL; |
93 | } | 89 | } |
94 | 90 | ||
95 | return nvgpu_vm_map_buffer(as_share->vm, args->dmabuf_fd, | 91 | return nvgpu_vm_map_buffer(as_share->vm, args->dmabuf_fd, |
96 | &args->offset, args->flags, | 92 | &args->offset, args->flags, |
97 | compressible_kind, incompressible_kind, | 93 | args->compr_kind, |
94 | args->incompr_kind, | ||
98 | args->buffer_offset, | 95 | args->buffer_offset, |
99 | args->mapping_size, | 96 | args->mapping_size, |
100 | NULL); | 97 | NULL); |
diff --git a/drivers/gpu/nvgpu/common/linux/vm.c b/drivers/gpu/nvgpu/common/linux/vm.c index 0cfd010b..895a5771 100644 --- a/drivers/gpu/nvgpu/common/linux/vm.c +++ b/drivers/gpu/nvgpu/common/linux/vm.c | |||
@@ -32,7 +32,6 @@ | |||
32 | 32 | ||
33 | #include "gk20a/gk20a.h" | 33 | #include "gk20a/gk20a.h" |
34 | #include "gk20a/mm_gk20a.h" | 34 | #include "gk20a/mm_gk20a.h" |
35 | #include "gk20a/kind_gk20a.h" | ||
36 | 35 | ||
37 | #include "platform_gk20a.h" | 36 | #include "platform_gk20a.h" |
38 | #include "os_linux.h" | 37 | #include "os_linux.h" |
@@ -239,14 +238,17 @@ int nvgpu_vm_map_linux(struct vm_gk20a *vm, | |||
239 | 238 | ||
240 | binfo.flags = flags; | 239 | binfo.flags = flags; |
241 | binfo.size = dmabuf->size; | 240 | binfo.size = dmabuf->size; |
241 | binfo.compr_kind = compr_kind; | ||
242 | binfo.incompr_kind = incompr_kind; | ||
242 | 243 | ||
243 | if (flags & NVGPU_AS_MAP_BUFFER_FLAGS_DIRECT_KIND_CTRL) { | 244 | if (compr_kind != NV_KIND_INVALID) |
244 | if (compr_kind != NV_KIND_INVALID) | ||
245 | map_key_kind = compr_kind; | ||
246 | else | ||
247 | map_key_kind = incompr_kind; | ||
248 | } else { | ||
249 | map_key_kind = compr_kind; | 245 | map_key_kind = compr_kind; |
246 | else | ||
247 | map_key_kind = incompr_kind; | ||
248 | |||
249 | if (map_key_kind == NV_KIND_INVALID) { | ||
250 | nvgpu_err(g, "Valid kind must be supplied"); | ||
251 | return -EINVAL; | ||
250 | } | 252 | } |
251 | 253 | ||
252 | if (vm->userspace_managed && | 254 | if (vm->userspace_managed && |
@@ -277,10 +279,6 @@ int nvgpu_vm_map_linux(struct vm_gk20a *vm, | |||
277 | goto clean_up; | 279 | goto clean_up; |
278 | } | 280 | } |
279 | 281 | ||
280 | err = nvgpu_vm_init_kind_info(&binfo, compr_kind, incompr_kind); | ||
281 | if (err) | ||
282 | goto clean_up; | ||
283 | |||
284 | aperture = gk20a_dmabuf_aperture(g, dmabuf); | 282 | aperture = gk20a_dmabuf_aperture(g, dmabuf); |
285 | if (aperture == APERTURE_INVALID) { | 283 | if (aperture == APERTURE_INVALID) { |
286 | err = -EINVAL; | 284 | err = -EINVAL; |
@@ -321,9 +319,9 @@ int nvgpu_vm_map_linux(struct vm_gk20a *vm, | |||
321 | va_allocated = true; | 319 | va_allocated = true; |
322 | } | 320 | } |
323 | 321 | ||
324 | err = nvgpu_vm_compute_kind_and_compression(vm, &binfo); | 322 | err = nvgpu_vm_compute_compression(vm, &binfo); |
325 | if (err) { | 323 | if (err) { |
326 | nvgpu_err(g, "failure setting up kind and compression"); | 324 | nvgpu_err(g, "failure setting up compression"); |
327 | goto clean_up; | 325 | goto clean_up; |
328 | } | 326 | } |
329 | 327 | ||
@@ -340,10 +338,12 @@ int nvgpu_vm_map_linux(struct vm_gk20a *vm, | |||
340 | binfo.ctag_lines); | 338 | binfo.ctag_lines); |
341 | if (err) { | 339 | if (err) { |
342 | /* TBD: we can partially alloc ctags as well... */ | 340 | /* TBD: we can partially alloc ctags as well... */ |
343 | if (binfo.use_uc_kind_v) { | 341 | |
344 | /* no comptags, but fallback kind available */ | 342 | /* prevent compression ... */ |
345 | binfo.kind_v = binfo.uc_kind_v; | 343 | binfo.compr_kind = NV_KIND_INVALID; |
346 | } else { | 344 | |
345 | /* ... and make sure we have the fallback */ | ||
346 | if (binfo.incompr_kind == NV_KIND_INVALID) { | ||
347 | nvgpu_err(g, "comptag alloc failed and no fallback kind specified"); | 347 | nvgpu_err(g, "comptag alloc failed and no fallback kind specified"); |
348 | goto clean_up; | 348 | goto clean_up; |
349 | } | 349 | } |
@@ -379,7 +379,8 @@ int nvgpu_vm_map_linux(struct vm_gk20a *vm, | |||
379 | buffer_offset, /* sg offset */ | 379 | buffer_offset, /* sg offset */ |
380 | mapping_size, | 380 | mapping_size, |
381 | binfo.pgsz_idx, | 381 | binfo.pgsz_idx, |
382 | binfo.kind_v, | 382 | (binfo.compr_kind != NV_KIND_INVALID ? |
383 | binfo.compr_kind : binfo.incompr_kind), | ||
383 | ctag_offset, | 384 | ctag_offset, |
384 | flags, rw_flag, | 385 | flags, rw_flag, |
385 | clear_ctags, | 386 | clear_ctags, |
diff --git a/drivers/gpu/nvgpu/common/mm/vm.c b/drivers/gpu/nvgpu/common/mm/vm.c index 64c9c217..46783e4e 100644 --- a/drivers/gpu/nvgpu/common/mm/vm.c +++ b/drivers/gpu/nvgpu/common/mm/vm.c | |||
@@ -35,7 +35,6 @@ | |||
35 | 35 | ||
36 | #include "gk20a/gk20a.h" | 36 | #include "gk20a/gk20a.h" |
37 | #include "gk20a/mm_gk20a.h" | 37 | #include "gk20a/mm_gk20a.h" |
38 | #include "gk20a/kind_gk20a.h" | ||
39 | 38 | ||
40 | static void __nvgpu_vm_unmap(struct nvgpu_mapped_buf *mapped_buffer, | 39 | static void __nvgpu_vm_unmap(struct nvgpu_mapped_buf *mapped_buffer, |
41 | struct vm_gk20a_mapping_batch *batch); | 40 | struct vm_gk20a_mapping_batch *batch); |
@@ -829,123 +828,36 @@ done: | |||
829 | return; | 828 | return; |
830 | } | 829 | } |
831 | 830 | ||
832 | int nvgpu_vm_init_kind_info(struct nvgpu_ctag_buffer_info *binfo, | 831 | int nvgpu_vm_compute_compression(struct vm_gk20a *vm, |
833 | s16 compr_kind, s16 incompr_kind) | 832 | struct nvgpu_ctag_buffer_info *binfo) |
834 | { | ||
835 | if (binfo->flags & NVGPU_AS_MAP_BUFFER_FLAGS_DIRECT_KIND_CTRL) { | ||
836 | /* were we supplied with a kind in either parameter? */ | ||
837 | if ((compr_kind < 0 || compr_kind >= NV_KIND_ATTR_SIZE) && | ||
838 | (incompr_kind < 0 || incompr_kind >= NV_KIND_ATTR_SIZE)) | ||
839 | return -EINVAL; | ||
840 | |||
841 | if (compr_kind != NV_KIND_INVALID) { | ||
842 | binfo->use_kind_v = true; | ||
843 | binfo->kind_v = (u8)compr_kind; | ||
844 | } | ||
845 | |||
846 | if (incompr_kind != NV_KIND_INVALID) { | ||
847 | binfo->use_uc_kind_v = true; | ||
848 | binfo->uc_kind_v = (u8)incompr_kind; | ||
849 | } | ||
850 | } else { | ||
851 | if (compr_kind < 0 || compr_kind >= NV_KIND_ATTR_SIZE) | ||
852 | return -EINVAL; | ||
853 | |||
854 | binfo->use_kind_v = true; | ||
855 | binfo->kind_v = (u8)compr_kind; | ||
856 | |||
857 | /* | ||
858 | * Note: nvgpu_vm_kind_and_compression() will figure out | ||
859 | * uc_kind_v or return an error. | ||
860 | */ | ||
861 | } | ||
862 | |||
863 | return 0; | ||
864 | } | ||
865 | |||
866 | static int nvgpu_vm_setup_kind_legacy(struct vm_gk20a *vm, | ||
867 | struct nvgpu_ctag_buffer_info *binfo, | ||
868 | bool *pkind_compressible) | ||
869 | { | 833 | { |
870 | struct gk20a *g = gk20a_from_vm(vm); | 834 | bool kind_compressible = (binfo->compr_kind != NV_KIND_INVALID); |
871 | bool kind_compressible; | ||
872 | |||
873 | if (unlikely(binfo->kind_v == g->ops.mm.get_kind_invalid())) | ||
874 | binfo->kind_v = g->ops.mm.get_kind_pitch(); | ||
875 | |||
876 | if (unlikely(!gk20a_kind_is_supported(binfo->kind_v))) { | ||
877 | nvgpu_err(g, "kind 0x%x not supported", binfo->kind_v); | ||
878 | return -EINVAL; | ||
879 | } | ||
880 | |||
881 | binfo->uc_kind_v = g->ops.mm.get_kind_invalid(); | ||
882 | |||
883 | /* | ||
884 | * Find a suitable incompressible kind if it becomes necessary later. | ||
885 | */ | ||
886 | kind_compressible = gk20a_kind_is_compressible(binfo->kind_v); | ||
887 | if (kind_compressible) { | ||
888 | binfo->uc_kind_v = gk20a_get_uncompressed_kind(binfo->kind_v); | ||
889 | if (binfo->uc_kind_v == g->ops.mm.get_kind_invalid()) { | ||
890 | /* | ||
891 | * Shouldn't happen, but it is worth cross-checking. | ||
892 | */ | ||
893 | nvgpu_err(g, "comptag kind 0x%x can't be" | ||
894 | " downgraded to uncompressed kind", | ||
895 | binfo->kind_v); | ||
896 | return -EINVAL; | ||
897 | } | ||
898 | } | ||
899 | |||
900 | *pkind_compressible = kind_compressible; | ||
901 | |||
902 | return 0; | ||
903 | } | ||
904 | |||
905 | int nvgpu_vm_compute_kind_and_compression(struct vm_gk20a *vm, | ||
906 | struct nvgpu_ctag_buffer_info *binfo) | ||
907 | { | ||
908 | bool kind_compressible; | ||
909 | struct gk20a *g = gk20a_from_vm(vm); | 835 | struct gk20a *g = gk20a_from_vm(vm); |
910 | int ctag_granularity = g->ops.fb.compression_page_size(g); | 836 | int ctag_granularity = g->ops.fb.compression_page_size(g); |
911 | 837 | ||
912 | if (!binfo->use_kind_v) | ||
913 | binfo->kind_v = g->ops.mm.get_kind_invalid(); | ||
914 | if (!binfo->use_uc_kind_v) | ||
915 | binfo->uc_kind_v = g->ops.mm.get_kind_invalid(); | ||
916 | |||
917 | if (binfo->flags & NVGPU_AS_MAP_BUFFER_FLAGS_DIRECT_KIND_CTRL) { | ||
918 | kind_compressible = (binfo->kind_v != | ||
919 | g->ops.mm.get_kind_invalid()); | ||
920 | if (!kind_compressible) | ||
921 | binfo->kind_v = binfo->uc_kind_v; | ||
922 | } else { | ||
923 | int err = nvgpu_vm_setup_kind_legacy(vm, binfo, | ||
924 | &kind_compressible); | ||
925 | |||
926 | if (err) | ||
927 | return err; | ||
928 | } | ||
929 | |||
930 | /* comptags only supported for suitable kinds, 128KB pagesize */ | ||
931 | if (kind_compressible && | 838 | if (kind_compressible && |
932 | vm->gmmu_page_sizes[binfo->pgsz_idx] < | 839 | vm->gmmu_page_sizes[binfo->pgsz_idx] < |
933 | g->ops.fb.compressible_page_size(g)) { | 840 | g->ops.fb.compressible_page_size(g)) { |
934 | /* it is safe to fall back to uncompressed as | 841 | /* |
935 | functionality is not harmed */ | 842 | * Let's double check that there is a fallback kind |
936 | binfo->kind_v = binfo->uc_kind_v; | 843 | */ |
937 | kind_compressible = false; | 844 | if (binfo->incompr_kind == NV_KIND_INVALID) { |
845 | nvgpu_err(g, | ||
846 | "Unsupported page size for compressible " | ||
847 | "kind, but no fallback kind"); | ||
848 | return -EINVAL; | ||
849 | } else { | ||
850 | nvgpu_log(g, gpu_dbg_map, | ||
851 | "Unsupported page size for compressible " | ||
852 | "kind, demoting to incompressible"); | ||
853 | binfo->compr_kind = NV_KIND_INVALID; | ||
854 | kind_compressible = false; | ||
855 | } | ||
938 | } | 856 | } |
939 | 857 | ||
940 | if (kind_compressible) | 858 | if (kind_compressible) |
941 | binfo->ctag_lines = DIV_ROUND_UP_ULL(binfo->size, | 859 | binfo->ctag_lines = DIV_ROUND_UP_ULL(binfo->size, |
942 | ctag_granularity); | 860 | ctag_granularity); |
943 | else | ||
944 | binfo->ctag_lines = 0; | ||
945 | |||
946 | binfo->use_kind_v = (binfo->kind_v != g->ops.mm.get_kind_invalid()); | ||
947 | binfo->use_uc_kind_v = (binfo->uc_kind_v != | ||
948 | g->ops.mm.get_kind_invalid()); | ||
949 | 861 | ||
950 | return 0; | 862 | return 0; |
951 | } | 863 | } |
diff --git a/drivers/gpu/nvgpu/gk20a/fb_gk20a.c b/drivers/gpu/nvgpu/gk20a/fb_gk20a.c index efe04dc2..a5a2cb51 100644 --- a/drivers/gpu/nvgpu/gk20a/fb_gk20a.c +++ b/drivers/gpu/nvgpu/gk20a/fb_gk20a.c | |||
@@ -25,7 +25,6 @@ | |||
25 | #include <trace/events/gk20a.h> | 25 | #include <trace/events/gk20a.h> |
26 | 26 | ||
27 | #include "gk20a.h" | 27 | #include "gk20a.h" |
28 | #include "kind_gk20a.h" | ||
29 | #include "fb_gk20a.h" | 28 | #include "fb_gk20a.h" |
30 | 29 | ||
31 | #include <nvgpu/timers.h> | 30 | #include <nvgpu/timers.h> |
diff --git a/drivers/gpu/nvgpu/gk20a/gr_gk20a.c b/drivers/gpu/nvgpu/gk20a/gr_gk20a.c index c59132f2..b77db87f 100644 --- a/drivers/gpu/nvgpu/gk20a/gr_gk20a.c +++ b/drivers/gpu/nvgpu/gk20a/gr_gk20a.c | |||
@@ -41,7 +41,6 @@ | |||
41 | #include <nvgpu/ctxsw_trace.h> | 41 | #include <nvgpu/ctxsw_trace.h> |
42 | 42 | ||
43 | #include "gk20a.h" | 43 | #include "gk20a.h" |
44 | #include "kind_gk20a.h" | ||
45 | #include "gr_ctx_gk20a.h" | 44 | #include "gr_ctx_gk20a.h" |
46 | #include "gr_pri_gk20a.h" | 45 | #include "gr_pri_gk20a.h" |
47 | #include "regops_gk20a.h" | 46 | #include "regops_gk20a.h" |
diff --git a/drivers/gpu/nvgpu/gk20a/kind_gk20a.c b/drivers/gpu/nvgpu/gk20a/kind_gk20a.c deleted file mode 100644 index 2d7eae0a..00000000 --- a/drivers/gpu/nvgpu/gk20a/kind_gk20a.c +++ /dev/null | |||
@@ -1,414 +0,0 @@ | |||
1 | /* | ||
2 | * GK20A memory kind management | ||
3 | * | ||
4 | * Copyright (c) 2011-2017, NVIDIA CORPORATION. All rights reserved. | ||
5 | * | ||
6 | * Permission is hereby granted, free of charge, to any person obtaining a | ||
7 | * copy of this software and associated documentation files (the "Software"), | ||
8 | * to deal in the Software without restriction, including without limitation | ||
9 | * the rights to use, copy, modify, merge, publish, distribute, sublicense, | ||
10 | * and/or sell copies of the Software, and to permit persons to whom the | ||
11 | * Software is furnished to do so, subject to the following conditions: | ||
12 | * | ||
13 | * The above copyright notice and this permission notice shall be included in | ||
14 | * all copies or substantial portions of the Software. | ||
15 | * | ||
16 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||
17 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
18 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL | ||
19 | * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||
20 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING | ||
21 | * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | ||
22 | * DEALINGS IN THE SOFTWARE. | ||
23 | */ | ||
24 | |||
25 | #include "kind_gk20a.h" | ||
26 | |||
27 | #include <nvgpu/hw/gk20a/hw_gmmu_gk20a.h> | ||
28 | |||
29 | /* TBD: generate these from kind_macros.h */ | ||
30 | |||
31 | /* | ||
32 | * Use noinline_for_stack for these huge functions, otherwise GCC 4.7 will | ||
33 | * blow up when building a coverage-enabled kernel. (error: the frame size of | ||
34 | * 1232 bytes is larger than 1024 bytes [-Werror=frame-larger-than=]) | ||
35 | */ | ||
36 | |||
37 | /* note: taken from the !2cs_compression case */ | ||
38 | static noinline_for_stack bool gk20a_kind_supported(u8 k) | ||
39 | { | ||
40 | return gk20a_kind_work_creation(k) | ||
41 | || (k == gmmu_pte_kind_invalid_v()) | ||
42 | || (k == gmmu_pte_kind_pitch_v()) | ||
43 | || (k >= gmmu_pte_kind_z16_v() && | ||
44 | k <= gmmu_pte_kind_z16_ms8_2c_v()) | ||
45 | || (k >= gmmu_pte_kind_z16_2z_v() && | ||
46 | k <= gmmu_pte_kind_z16_ms8_2z_v()) | ||
47 | || (k == gmmu_pte_kind_s8z24_v()) | ||
48 | || (k >= gmmu_pte_kind_s8z24_2cz_v() && | ||
49 | k <= gmmu_pte_kind_s8z24_ms8_2cz_v()) | ||
50 | || (k >= gmmu_pte_kind_v8z24_ms4_vc12_v() && | ||
51 | k <= gmmu_pte_kind_v8z24_ms8_vc24_v()) | ||
52 | || (k >= gmmu_pte_kind_v8z24_ms4_vc12_2czv_v() && | ||
53 | k <= gmmu_pte_kind_v8z24_ms8_vc24_2zv_v()) | ||
54 | || (k == gmmu_pte_kind_z24s8_v()) | ||
55 | || (k >= gmmu_pte_kind_z24s8_2cz_v() && | ||
56 | k <= gmmu_pte_kind_z24s8_ms8_2cz_v()) | ||
57 | || (k == gmmu_pte_kind_zf32_v()) | ||
58 | || (k >= gmmu_pte_kind_zf32_2cz_v() && | ||
59 | k <= gmmu_pte_kind_zf32_ms8_2cz_v()) | ||
60 | || (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_v() && | ||
61 | k <= gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_v()) | ||
62 | || (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_2cszv_v() && | ||
63 | k <= gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_v()) | ||
64 | || (k >= gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_2cszv_v() && | ||
65 | k <= gmmu_pte_kind_zf32_x24s8_v()) | ||
66 | || (k >= gmmu_pte_kind_zf32_x24s8_2cszv_v() && | ||
67 | k <= gmmu_pte_kind_zf32_x24s8_ms8_2cszv_v()) | ||
68 | || (k == gmmu_pte_kind_generic_16bx2_v()) | ||
69 | || (k == gmmu_pte_kind_c32_2c_v()) | ||
70 | || (k == gmmu_pte_kind_c32_2cra_v()) | ||
71 | || (k == gmmu_pte_kind_c32_ms2_2c_v()) | ||
72 | || (k == gmmu_pte_kind_c32_ms2_2cra_v()) | ||
73 | || (k >= gmmu_pte_kind_c32_ms4_2c_v() && | ||
74 | k <= gmmu_pte_kind_c32_ms4_2cbr_v()) | ||
75 | || (k >= gmmu_pte_kind_c32_ms4_2cra_v() && | ||
76 | k <= gmmu_pte_kind_c64_2c_v()) | ||
77 | || (k == gmmu_pte_kind_c64_2cra_v()) | ||
78 | || (k == gmmu_pte_kind_c64_ms2_2c_v()) | ||
79 | || (k == gmmu_pte_kind_c64_ms2_2cra_v()) | ||
80 | || (k >= gmmu_pte_kind_c64_ms4_2c_v() && | ||
81 | k <= gmmu_pte_kind_c64_ms4_2cbr_v()) | ||
82 | || (k >= gmmu_pte_kind_c64_ms4_2cra_v() && | ||
83 | k <= gmmu_pte_kind_c128_ms8_ms16_2cr_v()) | ||
84 | || (k == gmmu_pte_kind_pitch_no_swizzle_v()); | ||
85 | } | ||
86 | |||
87 | static noinline_for_stack bool gk20a_kind_z(u8 k) | ||
88 | { | ||
89 | return (k >= gmmu_pte_kind_z16_v() && | ||
90 | k <= gmmu_pte_kind_v8z24_ms8_vc24_v()) | ||
91 | || (k >= gmmu_pte_kind_v8z24_ms4_vc12_1zv_v() && | ||
92 | k <= gmmu_pte_kind_v8z24_ms8_vc24_2cs_v()) | ||
93 | || (k >= gmmu_pte_kind_v8z24_ms4_vc12_2czv_v() && | ||
94 | k <= gmmu_pte_kind_z24v8_ms8_vc24_v()) | ||
95 | || (k >= gmmu_pte_kind_z24v8_ms4_vc12_1zv_v() && | ||
96 | k <= gmmu_pte_kind_z24v8_ms8_vc24_2cs_v()) | ||
97 | || (k >= gmmu_pte_kind_z24v8_ms4_vc12_2czv_v() && | ||
98 | k <= gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_1cs_v()) | ||
99 | || (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_1zv_v() && | ||
100 | k <= gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_1cs_v()) | ||
101 | || (k >= gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_1zv_v() && | ||
102 | k <= gmmu_pte_kind_zf32_x24s8_ms16_1cs_v()); | ||
103 | } | ||
104 | |||
105 | static noinline_for_stack bool gk20a_kind_c(u8 k) | ||
106 | { | ||
107 | return gk20a_kind_work_creation(k) | ||
108 | || (k == gmmu_pte_kind_pitch_v()) | ||
109 | || (k == gmmu_pte_kind_generic_16bx2_v()) | ||
110 | || (k >= gmmu_pte_kind_c32_2c_v() && | ||
111 | k <= gmmu_pte_kind_c32_ms2_2cbr_v()) | ||
112 | || (k == gmmu_pte_kind_c32_ms2_2cra_v()) | ||
113 | || (k >= gmmu_pte_kind_c32_ms4_2c_v() && | ||
114 | k <= gmmu_pte_kind_c64_ms2_2cbr_v()) | ||
115 | || (k == gmmu_pte_kind_c64_ms2_2cra_v()) | ||
116 | || (k >= gmmu_pte_kind_c64_ms4_2c_v() && | ||
117 | k <= gmmu_pte_kind_pitch_no_swizzle_v()); | ||
118 | } | ||
119 | |||
120 | static noinline_for_stack bool gk20a_kind_compressible(u8 k) | ||
121 | { | ||
122 | return (k >= gmmu_pte_kind_z16_2c_v() && | ||
123 | k <= gmmu_pte_kind_z16_ms16_4cz_v()) | ||
124 | || (k >= gmmu_pte_kind_s8z24_1z_v() && | ||
125 | k <= gmmu_pte_kind_s8z24_ms16_4cszv_v()) | ||
126 | || (k >= gmmu_pte_kind_v8z24_ms4_vc12_1zv_v() && | ||
127 | k <= gmmu_pte_kind_v8z24_ms8_vc24_2cs_v()) | ||
128 | || (k >= gmmu_pte_kind_v8z24_ms4_vc12_2czv_v() && | ||
129 | k <= gmmu_pte_kind_v8z24_ms8_vc24_4cszv_v()) | ||
130 | || (k >= gmmu_pte_kind_z24s8_1z_v() && | ||
131 | k <= gmmu_pte_kind_z24s8_ms16_4cszv_v()) | ||
132 | || (k >= gmmu_pte_kind_z24v8_ms4_vc12_1zv_v() && | ||
133 | k <= gmmu_pte_kind_z24v8_ms8_vc24_2cs_v()) | ||
134 | || (k >= gmmu_pte_kind_z24v8_ms4_vc12_2czv_v() && | ||
135 | k <= gmmu_pte_kind_z24v8_ms8_vc24_4cszv_v()) | ||
136 | || (k >= gmmu_pte_kind_zf32_1z_v() && | ||
137 | k <= gmmu_pte_kind_zf32_ms16_2cz_v()) | ||
138 | || (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_1cs_v() && | ||
139 | k <= gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_1cs_v()) | ||
140 | || (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_1zv_v() && | ||
141 | k <= gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_2cszv_v()) | ||
142 | || (k >= gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_1cs_v() && | ||
143 | k <= gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_1cs_v()) | ||
144 | || (k >= gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_1zv_v() && | ||
145 | k <= gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_2cszv_v()) | ||
146 | || (k >= gmmu_pte_kind_zf32_x24s8_1cs_v() && | ||
147 | k <= gmmu_pte_kind_zf32_x24s8_ms16_1cs_v()) | ||
148 | || (k >= gmmu_pte_kind_zf32_x24s8_2cszv_v() && | ||
149 | k <= gmmu_pte_kind_c32_ms2_2cbr_v()) | ||
150 | || (k == gmmu_pte_kind_c32_ms2_2cra_v()) | ||
151 | || (k >= gmmu_pte_kind_c32_ms4_2c_v() && | ||
152 | k <= gmmu_pte_kind_c64_ms2_2cbr_v()) | ||
153 | || (k == gmmu_pte_kind_c64_ms2_2cra_v()) | ||
154 | || (k >= gmmu_pte_kind_c64_ms4_2c_v() && | ||
155 | k <= gmmu_pte_kind_c128_ms8_ms16_2cr_v()); | ||
156 | } | ||
157 | |||
158 | static noinline_for_stack bool gk20a_kind_zbc(u8 k) | ||
159 | { | ||
160 | return (k >= gmmu_pte_kind_z16_2c_v() && | ||
161 | k <= gmmu_pte_kind_z16_ms16_2c_v()) | ||
162 | || (k >= gmmu_pte_kind_z16_4cz_v() && | ||
163 | k <= gmmu_pte_kind_z16_ms16_4cz_v()) | ||
164 | || (k >= gmmu_pte_kind_s8z24_2cz_v() && | ||
165 | k <= gmmu_pte_kind_s8z24_ms16_4cszv_v()) | ||
166 | || (k >= gmmu_pte_kind_v8z24_ms4_vc12_2cs_v() && | ||
167 | k <= gmmu_pte_kind_v8z24_ms8_vc24_2cs_v()) | ||
168 | || (k >= gmmu_pte_kind_v8z24_ms4_vc12_2czv_v() && | ||
169 | k <= gmmu_pte_kind_v8z24_ms8_vc24_2czv_v()) | ||
170 | || (k >= gmmu_pte_kind_v8z24_ms4_vc12_4cszv_v() && | ||
171 | k <= gmmu_pte_kind_v8z24_ms8_vc24_4cszv_v()) | ||
172 | || (k >= gmmu_pte_kind_z24s8_2cs_v() && | ||
173 | k <= gmmu_pte_kind_z24s8_ms16_4cszv_v()) | ||
174 | || (k >= gmmu_pte_kind_z24v8_ms4_vc12_2cs_v() && | ||
175 | k <= gmmu_pte_kind_z24v8_ms8_vc24_2cs_v()) | ||
176 | || (k >= gmmu_pte_kind_z24v8_ms4_vc12_2czv_v() && | ||
177 | k <= gmmu_pte_kind_z24v8_ms8_vc24_2czv_v()) | ||
178 | || (k >= gmmu_pte_kind_z24v8_ms4_vc12_4cszv_v() && | ||
179 | k <= gmmu_pte_kind_z24v8_ms8_vc24_4cszv_v()) | ||
180 | || (k >= gmmu_pte_kind_zf32_2cs_v() && | ||
181 | k <= gmmu_pte_kind_zf32_ms16_2cz_v()) | ||
182 | || (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_1cs_v() && | ||
183 | k <= gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_1cs_v()) | ||
184 | || (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_1czv_v() && | ||
185 | k <= gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_2cszv_v()) | ||
186 | || (k >= gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_1cs_v() && | ||
187 | k <= gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_1cs_v()) | ||
188 | || (k >= gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_1czv_v() && | ||
189 | k <= gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_2cszv_v()) | ||
190 | || (k >= gmmu_pte_kind_zf32_x24s8_1cs_v() && | ||
191 | k <= gmmu_pte_kind_zf32_x24s8_ms16_1cs_v()) | ||
192 | || (k >= gmmu_pte_kind_zf32_x24s8_2cszv_v() && | ||
193 | k <= gmmu_pte_kind_c32_2cra_v()) | ||
194 | || (k >= gmmu_pte_kind_c32_ms2_2c_v() && | ||
195 | k <= gmmu_pte_kind_c32_ms2_2cbr_v()) | ||
196 | || (k == gmmu_pte_kind_c32_ms2_2cra_v()) | ||
197 | || (k >= gmmu_pte_kind_c32_ms4_2c_v() && | ||
198 | k <= gmmu_pte_kind_c32_ms4_2cra_v()) | ||
199 | || (k >= gmmu_pte_kind_c32_ms8_ms16_2c_v() && | ||
200 | k <= gmmu_pte_kind_c64_2cra_v()) | ||
201 | || (k >= gmmu_pte_kind_c64_ms2_2c_v() && | ||
202 | k <= gmmu_pte_kind_c64_ms2_2cbr_v()) | ||
203 | || (k == gmmu_pte_kind_c64_ms2_2cra_v()) | ||
204 | || (k >= gmmu_pte_kind_c64_ms4_2c_v() && | ||
205 | k <= gmmu_pte_kind_c64_ms4_2cra_v()) | ||
206 | || (k >= gmmu_pte_kind_c64_ms8_ms16_2c_v() && | ||
207 | k <= gmmu_pte_kind_c128_ms8_ms16_2cr_v()); | ||
208 | } | ||
209 | |||
210 | u8 gk20a_uc_kind_map[256]; | ||
211 | void gk20a_init_uncompressed_kind_map(void) | ||
212 | { | ||
213 | int i; | ||
214 | for (i = 0; i < 256; i++) | ||
215 | gk20a_uc_kind_map[i] = gmmu_pte_kind_invalid_v(); | ||
216 | |||
217 | gk20a_uc_kind_map[gmmu_pte_kind_z16_v()] = | ||
218 | gk20a_uc_kind_map[gmmu_pte_kind_z16_2c_v()] = | ||
219 | gk20a_uc_kind_map[gmmu_pte_kind_z16_ms2_2c_v()] = | ||
220 | gk20a_uc_kind_map[gmmu_pte_kind_z16_ms4_2c_v()] = | ||
221 | gk20a_uc_kind_map[gmmu_pte_kind_z16_ms8_2c_v()] = | ||
222 | gk20a_uc_kind_map[gmmu_pte_kind_z16_2z_v()] = | ||
223 | gk20a_uc_kind_map[gmmu_pte_kind_z16_ms2_2z_v()] = | ||
224 | gk20a_uc_kind_map[gmmu_pte_kind_z16_ms4_2z_v()] = | ||
225 | gk20a_uc_kind_map[gmmu_pte_kind_z16_ms8_2z_v()] = | ||
226 | gmmu_pte_kind_z16_v(); | ||
227 | |||
228 | gk20a_uc_kind_map[gmmu_pte_kind_s8z24_v()] = | ||
229 | gk20a_uc_kind_map[gmmu_pte_kind_s8z24_2cz_v()] = | ||
230 | gk20a_uc_kind_map[gmmu_pte_kind_s8z24_ms2_2cz_v()] = | ||
231 | gk20a_uc_kind_map[gmmu_pte_kind_s8z24_ms4_2cz_v()] = | ||
232 | gk20a_uc_kind_map[gmmu_pte_kind_s8z24_ms8_2cz_v()] = | ||
233 | gk20a_uc_kind_map[gmmu_pte_kind_s8z24_2cs_v()] = | ||
234 | gk20a_uc_kind_map[gmmu_pte_kind_s8z24_ms2_2cs_v()] = | ||
235 | gk20a_uc_kind_map[gmmu_pte_kind_s8z24_ms4_2cs_v()] = | ||
236 | gk20a_uc_kind_map[gmmu_pte_kind_s8z24_ms8_2cs_v()] = | ||
237 | gmmu_pte_kind_s8z24_v(); | ||
238 | |||
239 | gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms4_vc4_v()] = | ||
240 | gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms4_vc4_2cs_v()] = | ||
241 | gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms4_vc4_2czv_v()] = | ||
242 | gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms4_vc4_2zv_v()] = | ||
243 | gmmu_pte_kind_v8z24_ms4_vc4_v(); | ||
244 | |||
245 | gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms8_vc8_v()] = | ||
246 | gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms8_vc8_2cs_v()] = | ||
247 | gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms8_vc8_2czv_v()] = | ||
248 | gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms8_vc8_2zv_v()] = | ||
249 | gmmu_pte_kind_v8z24_ms8_vc8_v(); | ||
250 | |||
251 | gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms4_vc12_v()] = | ||
252 | gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms4_vc12_2cs_v()] = | ||
253 | gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms4_vc12_2czv_v()] = | ||
254 | gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms4_vc12_2zv_v()] = | ||
255 | gmmu_pte_kind_v8z24_ms4_vc12_v(); | ||
256 | |||
257 | gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms8_vc24_v()] = | ||
258 | gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms8_vc24_2cs_v()] = | ||
259 | gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms8_vc24_2czv_v()] = | ||
260 | gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms8_vc24_2zv_v()] = | ||
261 | gmmu_pte_kind_v8z24_ms8_vc24_v(); | ||
262 | |||
263 | gk20a_uc_kind_map[gmmu_pte_kind_z24s8_v()] = | ||
264 | gk20a_uc_kind_map[gmmu_pte_kind_z24s8_2cs_v()] = | ||
265 | gk20a_uc_kind_map[gmmu_pte_kind_z24s8_ms2_2cs_v()] = | ||
266 | gk20a_uc_kind_map[gmmu_pte_kind_z24s8_ms4_2cs_v()] = | ||
267 | gk20a_uc_kind_map[gmmu_pte_kind_z24s8_ms8_2cs_v()] = | ||
268 | gk20a_uc_kind_map[gmmu_pte_kind_z24s8_2cz_v()] = | ||
269 | gk20a_uc_kind_map[gmmu_pte_kind_z24s8_ms2_2cz_v()] = | ||
270 | gk20a_uc_kind_map[gmmu_pte_kind_z24s8_ms4_2cz_v()] = | ||
271 | gk20a_uc_kind_map[gmmu_pte_kind_z24s8_ms8_2cz_v()] = | ||
272 | gmmu_pte_kind_z24s8_v(); | ||
273 | |||
274 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_v()] = | ||
275 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_2cs_v()] = | ||
276 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_ms2_2cs_v()] = | ||
277 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_ms4_2cs_v()] = | ||
278 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_ms8_2cs_v()] = | ||
279 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_2cz_v()] = | ||
280 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_ms2_2cz_v()] = | ||
281 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_ms4_2cz_v()] = | ||
282 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_ms8_2cz_v()] = | ||
283 | gmmu_pte_kind_zf32_v(); | ||
284 | |||
285 | gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_v()] = | ||
286 | gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_2cs_v()] = | ||
287 | gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_2cszv_v()] = | ||
288 | gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_v(); | ||
289 | |||
290 | gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms4_vc4_v()] = | ||
291 | gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms4_vc4_2cs_v()] = | ||
292 | gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms4_vc4_2cszv_v()] = | ||
293 | gmmu_pte_kind_x8z24_x16v8s8_ms4_vc4_v(); | ||
294 | |||
295 | gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms8_vc8_v()] = | ||
296 | gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms8_vc8_2cs_v()] = | ||
297 | gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms8_vc8_2cszv_v()] = | ||
298 | gmmu_pte_kind_x8z24_x16v8s8_ms8_vc8_v(); | ||
299 | |||
300 | gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_v()] = | ||
301 | gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_2cs_v()] = | ||
302 | gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_2cszv_v()] = | ||
303 | gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_v(); | ||
304 | |||
305 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_v()] = | ||
306 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_2cs_v()] = | ||
307 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_2cszv_v()] = | ||
308 | gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_v(); | ||
309 | |||
310 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms4_vc4_v()] = | ||
311 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms4_vc4_2cs_v()] = | ||
312 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms4_vc4_2cszv_v()] = | ||
313 | gmmu_pte_kind_zf32_x16v8s8_ms4_vc4_v(); | ||
314 | |||
315 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms8_vc8_v()] = | ||
316 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms8_vc8_2cs_v()] = | ||
317 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms8_vc8_2cszv_v()] = | ||
318 | gmmu_pte_kind_zf32_x16v8s8_ms8_vc8_v(); | ||
319 | |||
320 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_v()] = | ||
321 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_2cs_v()] = | ||
322 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_2cszv_v()] = | ||
323 | gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_v(); | ||
324 | |||
325 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_v()] = | ||
326 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_2cszv_v()] = | ||
327 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_ms2_2cszv_v()] = | ||
328 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_ms4_2cszv_v()] = | ||
329 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_ms8_2cszv_v()] = | ||
330 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_2cs_v()] = | ||
331 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_ms2_2cs_v()] = | ||
332 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_ms4_2cs_v()] = | ||
333 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_ms8_2cs_v()] = | ||
334 | gmmu_pte_kind_zf32_x24s8_v(); | ||
335 | |||
336 | gk20a_uc_kind_map[gmmu_pte_kind_c32_2c_v()] = | ||
337 | gk20a_uc_kind_map[gmmu_pte_kind_c32_2cba_v()] = | ||
338 | gk20a_uc_kind_map[gmmu_pte_kind_c32_2cra_v()] = | ||
339 | gk20a_uc_kind_map[gmmu_pte_kind_c32_2bra_v()] = | ||
340 | gk20a_uc_kind_map[gmmu_pte_kind_c32_ms2_2c_v()] = | ||
341 | gk20a_uc_kind_map[gmmu_pte_kind_c32_ms2_2cra_v()] = | ||
342 | gk20a_uc_kind_map[gmmu_pte_kind_c32_ms4_2c_v()] = | ||
343 | gk20a_uc_kind_map[gmmu_pte_kind_c32_ms4_2cbr_v()] = | ||
344 | gk20a_uc_kind_map[gmmu_pte_kind_c32_ms4_2cba_v()] = | ||
345 | gk20a_uc_kind_map[gmmu_pte_kind_c32_ms4_2cra_v()] = | ||
346 | gk20a_uc_kind_map[gmmu_pte_kind_c32_ms4_2bra_v()] = | ||
347 | gk20a_uc_kind_map[gmmu_pte_kind_c32_ms8_ms16_2c_v()] = | ||
348 | gk20a_uc_kind_map[gmmu_pte_kind_c32_ms8_ms16_2cra_v()] = | ||
349 | gk20a_uc_kind_map[gmmu_pte_kind_c64_2c_v()] = | ||
350 | gk20a_uc_kind_map[gmmu_pte_kind_c64_2cbr_v()] = | ||
351 | gk20a_uc_kind_map[gmmu_pte_kind_c64_2cba_v()] = | ||
352 | gk20a_uc_kind_map[gmmu_pte_kind_c64_2cra_v()] = | ||
353 | gk20a_uc_kind_map[gmmu_pte_kind_c64_2bra_v()] = | ||
354 | gk20a_uc_kind_map[gmmu_pte_kind_c64_ms2_2c_v()] = | ||
355 | gk20a_uc_kind_map[gmmu_pte_kind_c64_ms2_2cra_v()] = | ||
356 | gk20a_uc_kind_map[gmmu_pte_kind_c64_ms4_2c_v()] = | ||
357 | gk20a_uc_kind_map[gmmu_pte_kind_c64_ms4_2cbr_v()] = | ||
358 | gk20a_uc_kind_map[gmmu_pte_kind_c64_ms4_2cba_v()] = | ||
359 | gk20a_uc_kind_map[gmmu_pte_kind_c64_ms4_2cra_v()] = | ||
360 | gk20a_uc_kind_map[gmmu_pte_kind_c64_ms4_2bra_v()] = | ||
361 | gk20a_uc_kind_map[gmmu_pte_kind_c64_ms8_ms16_2c_v()] = | ||
362 | gk20a_uc_kind_map[gmmu_pte_kind_c64_ms8_ms16_2cra_v()] = | ||
363 | gk20a_uc_kind_map[gmmu_pte_kind_c128_2c_v()] = | ||
364 | gk20a_uc_kind_map[gmmu_pte_kind_c128_2cr_v()] = | ||
365 | gk20a_uc_kind_map[gmmu_pte_kind_c128_ms2_2c_v()] = | ||
366 | gk20a_uc_kind_map[gmmu_pte_kind_c128_ms2_2cr_v()] = | ||
367 | gk20a_uc_kind_map[gmmu_pte_kind_c128_ms4_2c_v()] = | ||
368 | gk20a_uc_kind_map[gmmu_pte_kind_c128_ms4_2cr_v()] = | ||
369 | gk20a_uc_kind_map[gmmu_pte_kind_c128_ms8_ms16_2c_v()] = | ||
370 | gk20a_uc_kind_map[gmmu_pte_kind_c128_ms8_ms16_2cr_v()] = | ||
371 | gmmu_pte_kind_generic_16bx2_v(); | ||
372 | |||
373 | gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms4_vc4_2czv_v()] = | ||
374 | gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms4_vc4_2cs_v()] = | ||
375 | gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms4_vc4_2zv_v()] = | ||
376 | gmmu_pte_kind_z24v8_ms4_vc4_v(); | ||
377 | |||
378 | gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms4_vc12_2czv_v()] = | ||
379 | gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms4_vc12_2cs_v()] = | ||
380 | gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms4_vc12_2zv_v()] = | ||
381 | gmmu_pte_kind_z24v8_ms4_vc12_v(); | ||
382 | |||
383 | gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms8_vc8_2cs_v()] = | ||
384 | gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms8_vc8_2czv_v()] = | ||
385 | gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms8_vc8_2zv_v()] = | ||
386 | gmmu_pte_kind_z24v8_ms8_vc8_v(); | ||
387 | |||
388 | gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms8_vc24_2cs_v()] = | ||
389 | gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms8_vc24_2czv_v()] = | ||
390 | gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms8_vc24_2zv_v()] = | ||
391 | gmmu_pte_kind_z24v8_ms8_vc24_v(); | ||
392 | |||
393 | gk20a_uc_kind_map[gmmu_pte_kind_x8c24_v()] = | ||
394 | gmmu_pte_kind_x8c24_v(); | ||
395 | } | ||
396 | |||
397 | u16 gk20a_kind_attr[NV_KIND_ATTR_SIZE]; | ||
398 | void gk20a_init_kind_attr(void) | ||
399 | { | ||
400 | u16 k; | ||
401 | for (k = 0; k < NV_KIND_ATTR_SIZE; k++) { | ||
402 | gk20a_kind_attr[k] = 0; | ||
403 | if (gk20a_kind_supported((u8)k)) | ||
404 | gk20a_kind_attr[k] |= GK20A_KIND_ATTR_SUPPORTED; | ||
405 | if (gk20a_kind_compressible((u8)k)) | ||
406 | gk20a_kind_attr[k] |= GK20A_KIND_ATTR_COMPRESSIBLE; | ||
407 | if (gk20a_kind_z((u8)k)) | ||
408 | gk20a_kind_attr[k] |= GK20A_KIND_ATTR_Z; | ||
409 | if (gk20a_kind_c((u8)k)) | ||
410 | gk20a_kind_attr[k] |= GK20A_KIND_ATTR_C; | ||
411 | if (gk20a_kind_zbc((u8)k)) | ||
412 | gk20a_kind_attr[k] |= GK20A_KIND_ATTR_ZBC; | ||
413 | } | ||
414 | } | ||
diff --git a/drivers/gpu/nvgpu/gk20a/kind_gk20a.h b/drivers/gpu/nvgpu/gk20a/kind_gk20a.h deleted file mode 100644 index da7c13cd..00000000 --- a/drivers/gpu/nvgpu/gk20a/kind_gk20a.h +++ /dev/null | |||
@@ -1,90 +0,0 @@ | |||
1 | /* | ||
2 | * drivers/video/tegra/host/gk20a/kind_gk20a.h | ||
3 | * | ||
4 | * GK20A memory kind management | ||
5 | * | ||
6 | * Copyright (c) 2011-2017, NVIDIA CORPORATION. All rights reserved. | ||
7 | * | ||
8 | * Permission is hereby granted, free of charge, to any person obtaining a | ||
9 | * copy of this software and associated documentation files (the "Software"), | ||
10 | * to deal in the Software without restriction, including without limitation | ||
11 | * the rights to use, copy, modify, merge, publish, distribute, sublicense, | ||
12 | * and/or sell copies of the Software, and to permit persons to whom the | ||
13 | * Software is furnished to do so, subject to the following conditions: | ||
14 | * | ||
15 | * The above copyright notice and this permission notice shall be included in | ||
16 | * all copies or substantial portions of the Software. | ||
17 | * | ||
18 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||
19 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
20 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL | ||
21 | * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||
22 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING | ||
23 | * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | ||
24 | * DEALINGS IN THE SOFTWARE. | ||
25 | */ | ||
26 | #ifndef __KIND_GK20A_H__ | ||
27 | #define __KIND_GK20A_H__ | ||
28 | |||
29 | #include <nvgpu/bitops.h> | ||
30 | |||
31 | void gk20a_init_uncompressed_kind_map(void); | ||
32 | void gk20a_init_kind_attr(void); | ||
33 | |||
34 | extern u16 gk20a_kind_attr[]; | ||
35 | #define NV_KIND_ATTR_SIZE 256 | ||
36 | #define NV_KIND_DEFAULT -1 | ||
37 | |||
38 | #define GK20A_KIND_ATTR_SUPPORTED BIT(0) | ||
39 | #define GK20A_KIND_ATTR_COMPRESSIBLE BIT(1) | ||
40 | #define GK20A_KIND_ATTR_Z BIT(2) | ||
41 | #define GK20A_KIND_ATTR_C BIT(3) | ||
42 | #define GK20A_KIND_ATTR_ZBC BIT(4) | ||
43 | |||
44 | /* TBD: not sure on the work creation for gk20a, doubtful */ | ||
45 | static inline bool gk20a_kind_work_creation_sked(u8 k) | ||
46 | { | ||
47 | return false; | ||
48 | } | ||
49 | static inline bool gk20a_kind_work_creation_host(u8 k) | ||
50 | { | ||
51 | return false; | ||
52 | } | ||
53 | |||
54 | static inline bool gk20a_kind_work_creation(u8 k) | ||
55 | { | ||
56 | return gk20a_kind_work_creation_sked(k) || | ||
57 | gk20a_kind_work_creation_host(k); | ||
58 | } | ||
59 | |||
60 | static inline bool gk20a_kind_is_supported(u8 k) | ||
61 | { | ||
62 | return !!(gk20a_kind_attr[k] & GK20A_KIND_ATTR_SUPPORTED); | ||
63 | } | ||
64 | static inline bool gk20a_kind_is_compressible(u8 k) | ||
65 | { | ||
66 | return !!(gk20a_kind_attr[k] & GK20A_KIND_ATTR_COMPRESSIBLE); | ||
67 | } | ||
68 | |||
69 | static inline bool gk20a_kind_is_z(u8 k) | ||
70 | { | ||
71 | return !!(gk20a_kind_attr[k] & GK20A_KIND_ATTR_Z); | ||
72 | } | ||
73 | |||
74 | static inline bool gk20a_kind_is_c(u8 k) | ||
75 | { | ||
76 | return !!(gk20a_kind_attr[k] & GK20A_KIND_ATTR_C); | ||
77 | } | ||
78 | static inline bool gk20a_kind_is_zbc(u8 k) | ||
79 | { | ||
80 | return !!(gk20a_kind_attr[k] & GK20A_KIND_ATTR_ZBC); | ||
81 | } | ||
82 | |||
83 | /* maps kind to its uncompressed version */ | ||
84 | extern u8 gk20a_uc_kind_map[]; | ||
85 | static inline u8 gk20a_get_uncompressed_kind(u8 k) | ||
86 | { | ||
87 | return gk20a_uc_kind_map[k]; | ||
88 | } | ||
89 | |||
90 | #endif /* __KIND_GK20A_H__ */ | ||
diff --git a/drivers/gpu/nvgpu/gk20a/mm_gk20a.c b/drivers/gpu/nvgpu/gk20a/mm_gk20a.c index d54e8d43..759ef816 100644 --- a/drivers/gpu/nvgpu/gk20a/mm_gk20a.c +++ b/drivers/gpu/nvgpu/gk20a/mm_gk20a.c | |||
@@ -43,7 +43,6 @@ | |||
43 | #include "gk20a.h" | 43 | #include "gk20a.h" |
44 | #include "mm_gk20a.h" | 44 | #include "mm_gk20a.h" |
45 | #include "fence_gk20a.h" | 45 | #include "fence_gk20a.h" |
46 | #include "kind_gk20a.h" | ||
47 | #include "bus_gk20a.h" | 46 | #include "bus_gk20a.h" |
48 | 47 | ||
49 | #include <nvgpu/hw/gk20a/hw_gmmu_gk20a.h> | 48 | #include <nvgpu/hw/gk20a/hw_gmmu_gk20a.h> |
diff --git a/drivers/gpu/nvgpu/gm20b/fb_gm20b.c b/drivers/gpu/nvgpu/gm20b/fb_gm20b.c index d23c4787..1f8cc326 100644 --- a/drivers/gpu/nvgpu/gm20b/fb_gm20b.c +++ b/drivers/gpu/nvgpu/gm20b/fb_gm20b.c | |||
@@ -23,7 +23,6 @@ | |||
23 | */ | 23 | */ |
24 | 24 | ||
25 | #include "gk20a/gk20a.h" | 25 | #include "gk20a/gk20a.h" |
26 | #include "gk20a/kind_gk20a.h" | ||
27 | #include "gk20a/fb_gk20a.h" | 26 | #include "gk20a/fb_gk20a.h" |
28 | #include "gm20b/fb_gm20b.h" | 27 | #include "gm20b/fb_gm20b.h" |
29 | 28 | ||
@@ -43,407 +42,6 @@ void fb_gm20b_init_fs_state(struct gk20a *g) | |||
43 | g->ltc_count); | 42 | g->ltc_count); |
44 | } | 43 | } |
45 | 44 | ||
46 | noinline_for_stack void gm20b_init_uncompressed_kind_map(void) | ||
47 | { | ||
48 | int i; | ||
49 | |||
50 | for (i = 0; i < 256; i++) | ||
51 | gk20a_uc_kind_map[i] = gmmu_pte_kind_invalid_v(); | ||
52 | |||
53 | /* From gm20b */ | ||
54 | gk20a_uc_kind_map[gmmu_pte_kind_s8_v()] = | ||
55 | gk20a_uc_kind_map[gmmu_pte_kind_s8_2s_v()] = | ||
56 | gmmu_pte_kind_s8_v(); | ||
57 | |||
58 | /* From gk20a */ | ||
59 | gk20a_uc_kind_map[gmmu_pte_kind_z16_v()] = | ||
60 | gk20a_uc_kind_map[gmmu_pte_kind_z16_2c_v()] = | ||
61 | gk20a_uc_kind_map[gmmu_pte_kind_z16_ms2_2c_v()] = | ||
62 | gk20a_uc_kind_map[gmmu_pte_kind_z16_ms4_2c_v()] = | ||
63 | gk20a_uc_kind_map[gmmu_pte_kind_z16_ms8_2c_v()] = | ||
64 | gk20a_uc_kind_map[gmmu_pte_kind_z16_2z_v()] = | ||
65 | gk20a_uc_kind_map[gmmu_pte_kind_z16_ms2_2z_v()] = | ||
66 | gk20a_uc_kind_map[gmmu_pte_kind_z16_ms4_2z_v()] = | ||
67 | gk20a_uc_kind_map[gmmu_pte_kind_z16_ms8_2z_v()] = | ||
68 | gmmu_pte_kind_z16_v(); | ||
69 | |||
70 | gk20a_uc_kind_map[gmmu_pte_kind_s8z24_v()] = | ||
71 | gk20a_uc_kind_map[gmmu_pte_kind_s8z24_2cz_v()] = | ||
72 | gk20a_uc_kind_map[gmmu_pte_kind_s8z24_ms2_2cz_v()] = | ||
73 | gk20a_uc_kind_map[gmmu_pte_kind_s8z24_ms4_2cz_v()] = | ||
74 | gk20a_uc_kind_map[gmmu_pte_kind_s8z24_ms8_2cz_v()] = | ||
75 | gk20a_uc_kind_map[gmmu_pte_kind_s8z24_2cs_v()] = | ||
76 | gk20a_uc_kind_map[gmmu_pte_kind_s8z24_ms2_2cs_v()] = | ||
77 | gk20a_uc_kind_map[gmmu_pte_kind_s8z24_ms4_2cs_v()] = | ||
78 | gk20a_uc_kind_map[gmmu_pte_kind_s8z24_ms8_2cs_v()] = | ||
79 | gmmu_pte_kind_s8z24_v(); | ||
80 | |||
81 | gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms4_vc4_v()] = | ||
82 | gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms4_vc4_2cs_v()] = | ||
83 | gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms4_vc4_2czv_v()] = | ||
84 | gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms4_vc4_2zv_v()] = | ||
85 | gmmu_pte_kind_v8z24_ms4_vc4_v(); | ||
86 | |||
87 | gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms8_vc8_v()] = | ||
88 | gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms8_vc8_2cs_v()] = | ||
89 | gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms8_vc8_2czv_v()] = | ||
90 | gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms8_vc8_2zv_v()] = | ||
91 | gmmu_pte_kind_v8z24_ms8_vc8_v(); | ||
92 | |||
93 | gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms4_vc12_v()] = | ||
94 | gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms4_vc12_2cs_v()] = | ||
95 | gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms4_vc12_2czv_v()] = | ||
96 | gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms4_vc12_2zv_v()] = | ||
97 | gmmu_pte_kind_v8z24_ms4_vc12_v(); | ||
98 | |||
99 | gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms8_vc24_v()] = | ||
100 | gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms8_vc24_2cs_v()] = | ||
101 | gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms8_vc24_2czv_v()] = | ||
102 | gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms8_vc24_2zv_v()] = | ||
103 | gmmu_pte_kind_v8z24_ms8_vc24_v(); | ||
104 | |||
105 | gk20a_uc_kind_map[gmmu_pte_kind_z24s8_v()] = | ||
106 | gk20a_uc_kind_map[gmmu_pte_kind_z24s8_2cs_v()] = | ||
107 | gk20a_uc_kind_map[gmmu_pte_kind_z24s8_ms2_2cs_v()] = | ||
108 | gk20a_uc_kind_map[gmmu_pte_kind_z24s8_ms4_2cs_v()] = | ||
109 | gk20a_uc_kind_map[gmmu_pte_kind_z24s8_ms8_2cs_v()] = | ||
110 | gk20a_uc_kind_map[gmmu_pte_kind_z24s8_2cz_v()] = | ||
111 | gk20a_uc_kind_map[gmmu_pte_kind_z24s8_ms2_2cz_v()] = | ||
112 | gk20a_uc_kind_map[gmmu_pte_kind_z24s8_ms4_2cz_v()] = | ||
113 | gk20a_uc_kind_map[gmmu_pte_kind_z24s8_ms8_2cz_v()] = | ||
114 | gmmu_pte_kind_z24s8_v(); | ||
115 | |||
116 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_v()] = | ||
117 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_2cs_v()] = | ||
118 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_ms2_2cs_v()] = | ||
119 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_ms4_2cs_v()] = | ||
120 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_ms8_2cs_v()] = | ||
121 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_2cz_v()] = | ||
122 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_ms2_2cz_v()] = | ||
123 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_ms4_2cz_v()] = | ||
124 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_ms8_2cz_v()] = | ||
125 | gmmu_pte_kind_zf32_v(); | ||
126 | |||
127 | gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_v()] = | ||
128 | gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_2cs_v()] = | ||
129 | gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_2cszv_v()] = | ||
130 | gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_v(); | ||
131 | |||
132 | gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms4_vc4_v()] = | ||
133 | gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms4_vc4_2cs_v()] = | ||
134 | gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms4_vc4_2cszv_v()] = | ||
135 | gmmu_pte_kind_x8z24_x16v8s8_ms4_vc4_v(); | ||
136 | |||
137 | gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms8_vc8_v()] = | ||
138 | gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms8_vc8_2cs_v()] = | ||
139 | gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms8_vc8_2cszv_v()] = | ||
140 | gmmu_pte_kind_x8z24_x16v8s8_ms8_vc8_v(); | ||
141 | |||
142 | gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_v()] = | ||
143 | gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_2cs_v()] = | ||
144 | gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_2cszv_v()] = | ||
145 | gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_v(); | ||
146 | |||
147 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_v()] = | ||
148 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_2cs_v()] = | ||
149 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_2cszv_v()] = | ||
150 | gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_v(); | ||
151 | |||
152 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms4_vc4_v()] = | ||
153 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms4_vc4_2cs_v()] = | ||
154 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms4_vc4_2cszv_v()] = | ||
155 | gmmu_pte_kind_zf32_x16v8s8_ms4_vc4_v(); | ||
156 | |||
157 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms8_vc8_v()] = | ||
158 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms8_vc8_2cs_v()] = | ||
159 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms8_vc8_2cszv_v()] = | ||
160 | gmmu_pte_kind_zf32_x16v8s8_ms8_vc8_v(); | ||
161 | |||
162 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_v()] = | ||
163 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_2cs_v()] = | ||
164 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_2cszv_v()] = | ||
165 | gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_v(); | ||
166 | |||
167 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_v()] = | ||
168 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_2cszv_v()] = | ||
169 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_ms2_2cszv_v()] = | ||
170 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_ms4_2cszv_v()] = | ||
171 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_ms8_2cszv_v()] = | ||
172 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_2cs_v()] = | ||
173 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_ms2_2cs_v()] = | ||
174 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_ms4_2cs_v()] = | ||
175 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_ms8_2cs_v()] = | ||
176 | gmmu_pte_kind_zf32_x24s8_v(); | ||
177 | |||
178 | gk20a_uc_kind_map[gmmu_pte_kind_c32_2c_v()] = | ||
179 | gk20a_uc_kind_map[gmmu_pte_kind_c32_2cba_v()] = | ||
180 | gk20a_uc_kind_map[gmmu_pte_kind_c32_2cra_v()] = | ||
181 | gk20a_uc_kind_map[gmmu_pte_kind_c32_2bra_v()] = | ||
182 | gk20a_uc_kind_map[gmmu_pte_kind_c32_ms2_2c_v()] = | ||
183 | gk20a_uc_kind_map[gmmu_pte_kind_c32_ms2_2cra_v()] = | ||
184 | gk20a_uc_kind_map[gmmu_pte_kind_c32_ms4_2c_v()] = | ||
185 | gk20a_uc_kind_map[gmmu_pte_kind_c32_ms4_2cbr_v()] = | ||
186 | gk20a_uc_kind_map[gmmu_pte_kind_c32_ms4_2cba_v()] = | ||
187 | gk20a_uc_kind_map[gmmu_pte_kind_c32_ms4_2cra_v()] = | ||
188 | gk20a_uc_kind_map[gmmu_pte_kind_c32_ms4_2bra_v()] = | ||
189 | gk20a_uc_kind_map[gmmu_pte_kind_c32_ms8_ms16_2c_v()] = | ||
190 | gk20a_uc_kind_map[gmmu_pte_kind_c32_ms8_ms16_2cra_v()] = | ||
191 | gk20a_uc_kind_map[gmmu_pte_kind_c64_2c_v()] = | ||
192 | gk20a_uc_kind_map[gmmu_pte_kind_c64_2cbr_v()] = | ||
193 | gk20a_uc_kind_map[gmmu_pte_kind_c64_2cba_v()] = | ||
194 | gk20a_uc_kind_map[gmmu_pte_kind_c64_2cra_v()] = | ||
195 | gk20a_uc_kind_map[gmmu_pte_kind_c64_2bra_v()] = | ||
196 | gk20a_uc_kind_map[gmmu_pte_kind_c64_ms2_2c_v()] = | ||
197 | gk20a_uc_kind_map[gmmu_pte_kind_c64_ms2_2cra_v()] = | ||
198 | gk20a_uc_kind_map[gmmu_pte_kind_c64_ms4_2c_v()] = | ||
199 | gk20a_uc_kind_map[gmmu_pte_kind_c64_ms4_2cbr_v()] = | ||
200 | gk20a_uc_kind_map[gmmu_pte_kind_c64_ms4_2cba_v()] = | ||
201 | gk20a_uc_kind_map[gmmu_pte_kind_c64_ms4_2cra_v()] = | ||
202 | gk20a_uc_kind_map[gmmu_pte_kind_c64_ms4_2bra_v()] = | ||
203 | gk20a_uc_kind_map[gmmu_pte_kind_c64_ms8_ms16_2c_v()] = | ||
204 | gk20a_uc_kind_map[gmmu_pte_kind_c64_ms8_ms16_2cra_v()] = | ||
205 | gk20a_uc_kind_map[gmmu_pte_kind_c128_2c_v()] = | ||
206 | gk20a_uc_kind_map[gmmu_pte_kind_c128_2cr_v()] = | ||
207 | gk20a_uc_kind_map[gmmu_pte_kind_c128_ms2_2c_v()] = | ||
208 | gk20a_uc_kind_map[gmmu_pte_kind_c128_ms2_2cr_v()] = | ||
209 | gk20a_uc_kind_map[gmmu_pte_kind_c128_ms4_2c_v()] = | ||
210 | gk20a_uc_kind_map[gmmu_pte_kind_c128_ms4_2cr_v()] = | ||
211 | gk20a_uc_kind_map[gmmu_pte_kind_c128_ms8_ms16_2c_v()] = | ||
212 | gk20a_uc_kind_map[gmmu_pte_kind_c128_ms8_ms16_2cr_v()] = | ||
213 | gmmu_pte_kind_generic_16bx2_v(); | ||
214 | |||
215 | gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms4_vc4_2czv_v()] = | ||
216 | gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms4_vc4_2cs_v()] = | ||
217 | gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms4_vc4_2zv_v()] = | ||
218 | gmmu_pte_kind_z24v8_ms4_vc4_v(); | ||
219 | |||
220 | gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms4_vc12_2czv_v()] = | ||
221 | gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms4_vc12_2cs_v()] = | ||
222 | gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms4_vc12_2zv_v()] = | ||
223 | gmmu_pte_kind_z24v8_ms4_vc12_v(); | ||
224 | |||
225 | gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms8_vc8_2cs_v()] = | ||
226 | gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms8_vc8_2czv_v()] = | ||
227 | gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms8_vc8_2zv_v()] = | ||
228 | gmmu_pte_kind_z24v8_ms8_vc8_v(); | ||
229 | |||
230 | gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms8_vc24_2cs_v()] = | ||
231 | gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms8_vc24_2czv_v()] = | ||
232 | gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms8_vc24_2zv_v()] = | ||
233 | gmmu_pte_kind_z24v8_ms8_vc24_v(); | ||
234 | |||
235 | gk20a_uc_kind_map[gmmu_pte_kind_x8c24_v()] = | ||
236 | gmmu_pte_kind_x8c24_v(); | ||
237 | } | ||
238 | |||
239 | static noinline_for_stack bool gm20b_kind_supported(u8 k) | ||
240 | { | ||
241 | return /* From gm20b */ | ||
242 | (k == gmmu_pte_kind_smsked_message_v()) | ||
243 | || (k >= gmmu_pte_kind_s8_v() && | ||
244 | k <= gmmu_pte_kind_s8_2s_v()) | ||
245 | /* From gk20a */ | ||
246 | || gk20a_kind_work_creation(k) | ||
247 | || (k == gmmu_pte_kind_invalid_v()) | ||
248 | || (k == gmmu_pte_kind_pitch_v()) | ||
249 | || (k >= gmmu_pte_kind_z16_v() && | ||
250 | k <= gmmu_pte_kind_z16_ms8_2c_v()) | ||
251 | || (k >= gmmu_pte_kind_z16_2z_v() && | ||
252 | k <= gmmu_pte_kind_z16_ms8_2z_v()) | ||
253 | || (k == gmmu_pte_kind_s8z24_v()) | ||
254 | || (k >= gmmu_pte_kind_s8z24_2cz_v() && | ||
255 | k <= gmmu_pte_kind_s8z24_ms8_2cz_v()) | ||
256 | || (k >= gmmu_pte_kind_v8z24_ms4_vc12_v() && | ||
257 | k <= gmmu_pte_kind_v8z24_ms8_vc24_v()) | ||
258 | || (k >= gmmu_pte_kind_v8z24_ms4_vc12_2czv_v() && | ||
259 | k <= gmmu_pte_kind_v8z24_ms8_vc24_2zv_v()) | ||
260 | || (k == gmmu_pte_kind_z24s8_v()) | ||
261 | || (k >= gmmu_pte_kind_z24s8_2cz_v() && | ||
262 | k <= gmmu_pte_kind_z24s8_ms8_2cz_v()) | ||
263 | || (k == gmmu_pte_kind_zf32_v()) | ||
264 | || (k >= gmmu_pte_kind_zf32_2cz_v() && | ||
265 | k <= gmmu_pte_kind_zf32_ms8_2cz_v()) | ||
266 | || (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_v() && | ||
267 | k <= gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_v()) | ||
268 | || (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_2cszv_v() && | ||
269 | k <= gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_v()) | ||
270 | || (k >= gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_2cszv_v() && | ||
271 | k <= gmmu_pte_kind_zf32_x24s8_v()) | ||
272 | || (k >= gmmu_pte_kind_zf32_x24s8_2cszv_v() && | ||
273 | k <= gmmu_pte_kind_zf32_x24s8_ms8_2cszv_v()) | ||
274 | || (k == gmmu_pte_kind_generic_16bx2_v()) | ||
275 | || (k == gmmu_pte_kind_c32_2c_v()) | ||
276 | || (k == gmmu_pte_kind_c32_2cra_v()) | ||
277 | || (k == gmmu_pte_kind_c32_ms2_2c_v()) | ||
278 | || (k == gmmu_pte_kind_c32_ms2_2cra_v()) | ||
279 | || (k >= gmmu_pte_kind_c32_ms4_2c_v() && | ||
280 | k <= gmmu_pte_kind_c32_ms4_2cbr_v()) | ||
281 | || (k >= gmmu_pte_kind_c32_ms4_2cra_v() && | ||
282 | k <= gmmu_pte_kind_c64_2c_v()) | ||
283 | || (k == gmmu_pte_kind_c64_2cra_v()) | ||
284 | || (k == gmmu_pte_kind_c64_ms2_2c_v()) | ||
285 | || (k == gmmu_pte_kind_c64_ms2_2cra_v()) | ||
286 | || (k >= gmmu_pte_kind_c64_ms4_2c_v() && | ||
287 | k <= gmmu_pte_kind_c64_ms4_2cbr_v()) | ||
288 | || (k >= gmmu_pte_kind_c64_ms4_2cra_v() && | ||
289 | k <= gmmu_pte_kind_c128_ms8_ms16_2cr_v()) | ||
290 | || (k == gmmu_pte_kind_pitch_no_swizzle_v()); | ||
291 | } | ||
292 | |||
293 | static noinline_for_stack bool gm20b_kind_z(u8 k) | ||
294 | { | ||
295 | return /* From gm20b */ | ||
296 | (k >= gmmu_pte_kind_s8_v() && | ||
297 | k <= gmmu_pte_kind_s8_2s_v()) | ||
298 | /* From gk20a */ | ||
299 | || (k >= gmmu_pte_kind_z16_v() && | ||
300 | k <= gmmu_pte_kind_v8z24_ms8_vc24_v()) | ||
301 | || (k >= gmmu_pte_kind_v8z24_ms4_vc12_1zv_v() && | ||
302 | k <= gmmu_pte_kind_v8z24_ms8_vc24_2cs_v()) | ||
303 | || (k >= gmmu_pte_kind_v8z24_ms4_vc12_2czv_v() && | ||
304 | k <= gmmu_pte_kind_z24v8_ms8_vc24_v()) | ||
305 | || (k >= gmmu_pte_kind_z24v8_ms4_vc12_1zv_v() && | ||
306 | k <= gmmu_pte_kind_z24v8_ms8_vc24_2cs_v()) | ||
307 | || (k >= gmmu_pte_kind_z24v8_ms4_vc12_2czv_v() && | ||
308 | k <= gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_1cs_v()) | ||
309 | || (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_1zv_v() && | ||
310 | k <= gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_1cs_v()) | ||
311 | || (k >= gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_1zv_v() && | ||
312 | k <= gmmu_pte_kind_zf32_x24s8_ms16_1cs_v()); | ||
313 | } | ||
314 | |||
315 | static noinline_for_stack bool gm20b_kind_c(u8 k) | ||
316 | { | ||
317 | return gk20a_kind_work_creation(k) | ||
318 | || (k == gmmu_pte_kind_pitch_v()) | ||
319 | || (k == gmmu_pte_kind_generic_16bx2_v()) | ||
320 | || (k >= gmmu_pte_kind_c32_2c_v() && | ||
321 | k <= gmmu_pte_kind_c32_ms2_2cbr_v()) | ||
322 | || (k == gmmu_pte_kind_c32_ms2_2cra_v()) | ||
323 | || (k >= gmmu_pte_kind_c32_ms4_2c_v() && | ||
324 | k <= gmmu_pte_kind_c64_ms2_2cbr_v()) | ||
325 | || (k == gmmu_pte_kind_c64_ms2_2cra_v()) | ||
326 | || (k >= gmmu_pte_kind_c64_ms4_2c_v() && | ||
327 | k <= gmmu_pte_kind_pitch_no_swizzle_v()); | ||
328 | } | ||
329 | |||
330 | static noinline_for_stack bool gm20b_kind_compressible(u8 k) | ||
331 | { | ||
332 | return /* From gm20b */ | ||
333 | (k >= gmmu_pte_kind_s8_v() && | ||
334 | k <= gmmu_pte_kind_s8_2s_v()) | ||
335 | /* From gk20a */ | ||
336 | || (k >= gmmu_pte_kind_z16_2c_v() && | ||
337 | k <= gmmu_pte_kind_z16_ms16_4cz_v()) | ||
338 | || (k >= gmmu_pte_kind_s8z24_1z_v() && | ||
339 | k <= gmmu_pte_kind_s8z24_ms16_4cszv_v()) | ||
340 | || (k >= gmmu_pte_kind_v8z24_ms4_vc12_1zv_v() && | ||
341 | k <= gmmu_pte_kind_v8z24_ms8_vc24_2cs_v()) | ||
342 | || (k >= gmmu_pte_kind_v8z24_ms4_vc12_2czv_v() && | ||
343 | k <= gmmu_pte_kind_v8z24_ms8_vc24_4cszv_v()) | ||
344 | || (k >= gmmu_pte_kind_z24s8_1z_v() && | ||
345 | k <= gmmu_pte_kind_z24s8_ms16_4cszv_v()) | ||
346 | || (k >= gmmu_pte_kind_z24v8_ms4_vc12_1zv_v() && | ||
347 | k <= gmmu_pte_kind_z24v8_ms8_vc24_2cs_v()) | ||
348 | || (k >= gmmu_pte_kind_z24v8_ms4_vc12_2czv_v() && | ||
349 | k <= gmmu_pte_kind_z24v8_ms8_vc24_4cszv_v()) | ||
350 | || (k >= gmmu_pte_kind_zf32_1z_v() && | ||
351 | k <= gmmu_pte_kind_zf32_ms16_2cz_v()) | ||
352 | || (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_1cs_v() && | ||
353 | k <= gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_1cs_v()) | ||
354 | || (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_1zv_v() && | ||
355 | k <= gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_2cszv_v()) | ||
356 | || (k >= gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_1cs_v() && | ||
357 | k <= gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_1cs_v()) | ||
358 | || (k >= gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_1zv_v() && | ||
359 | k <= gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_2cszv_v()) | ||
360 | || (k >= gmmu_pte_kind_zf32_x24s8_1cs_v() && | ||
361 | k <= gmmu_pte_kind_zf32_x24s8_ms16_1cs_v()) | ||
362 | || (k >= gmmu_pte_kind_zf32_x24s8_2cszv_v() && | ||
363 | k <= gmmu_pte_kind_c32_ms2_2cbr_v()) | ||
364 | || (k == gmmu_pte_kind_c32_ms2_2cra_v()) | ||
365 | || (k >= gmmu_pte_kind_c32_ms4_2c_v() && | ||
366 | k <= gmmu_pte_kind_c64_ms2_2cbr_v()) | ||
367 | || (k == gmmu_pte_kind_c64_ms2_2cra_v()) | ||
368 | || (k >= gmmu_pte_kind_c64_ms4_2c_v() && | ||
369 | k <= gmmu_pte_kind_c128_ms8_ms16_2cr_v()); | ||
370 | } | ||
371 | |||
372 | static noinline_for_stack bool gm20b_kind_zbc(u8 k) | ||
373 | { | ||
374 | return /* From gm20b */ | ||
375 | (k >= gmmu_pte_kind_s8_v() && | ||
376 | k <= gmmu_pte_kind_s8_2s_v()) | ||
377 | /* From gk20a */ | ||
378 | || (k >= gmmu_pte_kind_z16_2c_v() && | ||
379 | k <= gmmu_pte_kind_z16_ms16_2c_v()) | ||
380 | || (k >= gmmu_pte_kind_z16_4cz_v() && | ||
381 | k <= gmmu_pte_kind_z16_ms16_4cz_v()) | ||
382 | || (k >= gmmu_pte_kind_s8z24_2cz_v() && | ||
383 | k <= gmmu_pte_kind_s8z24_ms16_4cszv_v()) | ||
384 | || (k >= gmmu_pte_kind_v8z24_ms4_vc12_2cs_v() && | ||
385 | k <= gmmu_pte_kind_v8z24_ms8_vc24_2cs_v()) | ||
386 | || (k >= gmmu_pte_kind_v8z24_ms4_vc12_2czv_v() && | ||
387 | k <= gmmu_pte_kind_v8z24_ms8_vc24_2czv_v()) | ||
388 | || (k >= gmmu_pte_kind_v8z24_ms4_vc12_4cszv_v() && | ||
389 | k <= gmmu_pte_kind_v8z24_ms8_vc24_4cszv_v()) | ||
390 | || (k >= gmmu_pte_kind_z24s8_2cs_v() && | ||
391 | k <= gmmu_pte_kind_z24s8_ms16_4cszv_v()) | ||
392 | || (k >= gmmu_pte_kind_z24v8_ms4_vc12_2cs_v() && | ||
393 | k <= gmmu_pte_kind_z24v8_ms8_vc24_2cs_v()) | ||
394 | || (k >= gmmu_pte_kind_z24v8_ms4_vc12_2czv_v() && | ||
395 | k <= gmmu_pte_kind_z24v8_ms8_vc24_2czv_v()) | ||
396 | || (k >= gmmu_pte_kind_z24v8_ms4_vc12_4cszv_v() && | ||
397 | k <= gmmu_pte_kind_z24v8_ms8_vc24_4cszv_v()) | ||
398 | || (k >= gmmu_pte_kind_zf32_2cs_v() && | ||
399 | k <= gmmu_pte_kind_zf32_ms16_2cz_v()) | ||
400 | || (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_1cs_v() && | ||
401 | k <= gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_1cs_v()) | ||
402 | || (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_1czv_v() && | ||
403 | k <= gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_2cszv_v()) | ||
404 | || (k >= gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_1cs_v() && | ||
405 | k <= gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_1cs_v()) | ||
406 | || (k >= gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_1czv_v() && | ||
407 | k <= gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_2cszv_v()) | ||
408 | || (k >= gmmu_pte_kind_zf32_x24s8_1cs_v() && | ||
409 | k <= gmmu_pte_kind_zf32_x24s8_ms16_1cs_v()) | ||
410 | || (k >= gmmu_pte_kind_zf32_x24s8_2cszv_v() && | ||
411 | k <= gmmu_pte_kind_c32_2cra_v()) | ||
412 | || (k >= gmmu_pte_kind_c32_ms2_2c_v() && | ||
413 | k <= gmmu_pte_kind_c32_ms2_2cbr_v()) | ||
414 | || (k == gmmu_pte_kind_c32_ms2_2cra_v()) | ||
415 | || (k >= gmmu_pte_kind_c32_ms4_2c_v() && | ||
416 | k <= gmmu_pte_kind_c32_ms4_2cra_v()) | ||
417 | || (k >= gmmu_pte_kind_c32_ms8_ms16_2c_v() && | ||
418 | k <= gmmu_pte_kind_c64_2cra_v()) | ||
419 | || (k >= gmmu_pte_kind_c64_ms2_2c_v() && | ||
420 | k <= gmmu_pte_kind_c64_ms2_2cbr_v()) | ||
421 | || (k == gmmu_pte_kind_c64_ms2_2cra_v()) | ||
422 | || (k >= gmmu_pte_kind_c64_ms4_2c_v() && | ||
423 | k <= gmmu_pte_kind_c64_ms4_2cra_v()) | ||
424 | || (k >= gmmu_pte_kind_c64_ms8_ms16_2c_v() && | ||
425 | k <= gmmu_pte_kind_c128_ms8_ms16_2cr_v()); | ||
426 | } | ||
427 | |||
428 | void gm20b_init_kind_attr(void) | ||
429 | { | ||
430 | u16 k; | ||
431 | |||
432 | for (k = 0; k < NV_KIND_ATTR_SIZE; k++) { | ||
433 | gk20a_kind_attr[k] = 0; | ||
434 | if (gm20b_kind_supported((u8)k)) | ||
435 | gk20a_kind_attr[k] |= GK20A_KIND_ATTR_SUPPORTED; | ||
436 | if (gm20b_kind_compressible((u8)k)) | ||
437 | gk20a_kind_attr[k] |= GK20A_KIND_ATTR_COMPRESSIBLE; | ||
438 | if (gm20b_kind_z((u8)k)) | ||
439 | gk20a_kind_attr[k] |= GK20A_KIND_ATTR_Z; | ||
440 | if (gm20b_kind_c((u8)k)) | ||
441 | gk20a_kind_attr[k] |= GK20A_KIND_ATTR_C; | ||
442 | if (gm20b_kind_zbc((u8)k)) | ||
443 | gk20a_kind_attr[k] |= GK20A_KIND_ATTR_ZBC; | ||
444 | } | ||
445 | } | ||
446 | |||
447 | void gm20b_fb_set_mmu_page_size(struct gk20a *g) | 45 | void gm20b_fb_set_mmu_page_size(struct gk20a *g) |
448 | { | 46 | { |
449 | /* set large page size in fb */ | 47 | /* set large page size in fb */ |
diff --git a/drivers/gpu/nvgpu/gm20b/fb_gm20b.h b/drivers/gpu/nvgpu/gm20b/fb_gm20b.h index 1bc0c14c..32d36f57 100644 --- a/drivers/gpu/nvgpu/gm20b/fb_gm20b.h +++ b/drivers/gpu/nvgpu/gm20b/fb_gm20b.h | |||
@@ -37,6 +37,4 @@ int gm20b_fb_vpr_info_fetch(struct gk20a *g); | |||
37 | bool gm20b_fb_debug_mode_enabled(struct gk20a *g); | 37 | bool gm20b_fb_debug_mode_enabled(struct gk20a *g); |
38 | void gm20b_fb_set_debug_mode(struct gk20a *g, bool enable); | 38 | void gm20b_fb_set_debug_mode(struct gk20a *g, bool enable); |
39 | 39 | ||
40 | void gm20b_init_uncompressed_kind_map(void); | ||
41 | void gm20b_init_kind_attr(void); | ||
42 | #endif | 40 | #endif |
diff --git a/drivers/gpu/nvgpu/gm20b/hal_gm20b.c b/drivers/gpu/nvgpu/gm20b/hal_gm20b.c index 20ab808a..42df76c9 100644 --- a/drivers/gpu/nvgpu/gm20b/hal_gm20b.c +++ b/drivers/gpu/nvgpu/gm20b/hal_gm20b.c | |||
@@ -703,9 +703,6 @@ int gm20b_init_hal(struct gk20a *g) | |||
703 | g->pmu_lsf_pmu_wpr_init_done = 0; | 703 | g->pmu_lsf_pmu_wpr_init_done = 0; |
704 | g->bootstrap_owner = LSF_BOOTSTRAP_OWNER_DEFAULT; | 704 | g->bootstrap_owner = LSF_BOOTSTRAP_OWNER_DEFAULT; |
705 | 705 | ||
706 | gm20b_init_uncompressed_kind_map(); | ||
707 | gm20b_init_kind_attr(); | ||
708 | |||
709 | g->name = "gm20b"; | 706 | g->name = "gm20b"; |
710 | 707 | ||
711 | return 0; | 708 | return 0; |
diff --git a/drivers/gpu/nvgpu/gp106/hal_gp106.c b/drivers/gpu/nvgpu/gp106/hal_gp106.c index 931780d5..09c82af8 100644 --- a/drivers/gpu/nvgpu/gp106/hal_gp106.c +++ b/drivers/gpu/nvgpu/gp106/hal_gp106.c | |||
@@ -769,9 +769,6 @@ int gp106_init_hal(struct gk20a *g) | |||
769 | g->pmu_lsf_pmu_wpr_init_done = 0; | 769 | g->pmu_lsf_pmu_wpr_init_done = 0; |
770 | g->bootstrap_owner = LSF_FALCON_ID_SEC2; | 770 | g->bootstrap_owner = LSF_FALCON_ID_SEC2; |
771 | 771 | ||
772 | gp10b_init_uncompressed_kind_map(); | ||
773 | gp10b_init_kind_attr(); | ||
774 | |||
775 | g->name = "gp10x"; | 772 | g->name = "gp10x"; |
776 | 773 | ||
777 | gk20a_dbg_fn("done"); | 774 | gk20a_dbg_fn("done"); |
diff --git a/drivers/gpu/nvgpu/gp10b/fb_gp10b.c b/drivers/gpu/nvgpu/gp10b/fb_gp10b.c index a66476b9..9df4c851 100644 --- a/drivers/gpu/nvgpu/gp10b/fb_gp10b.c +++ b/drivers/gpu/nvgpu/gp10b/fb_gp10b.c | |||
@@ -23,448 +23,8 @@ | |||
23 | */ | 23 | */ |
24 | 24 | ||
25 | #include "gk20a/gk20a.h" | 25 | #include "gk20a/gk20a.h" |
26 | #include "gm20b/fb_gm20b.h" | ||
27 | #include "gk20a/kind_gk20a.h" | ||
28 | #include "fb_gp10b.h" | 26 | #include "fb_gp10b.h" |
29 | 27 | ||
30 | #include <nvgpu/hw/gp10b/hw_gmmu_gp10b.h> | ||
31 | |||
32 | noinline_for_stack void gp10b_init_uncompressed_kind_map(void) | ||
33 | { | ||
34 | int i; | ||
35 | |||
36 | for (i = 0; i < 256; i++) | ||
37 | gk20a_uc_kind_map[i] = gmmu_pte_kind_invalid_v(); | ||
38 | |||
39 | /* From gp10b */ | ||
40 | gk20a_uc_kind_map[gmmu_pte_kind_z16_2cz_v()] = | ||
41 | gk20a_uc_kind_map[gmmu_pte_kind_z16_ms2_2cz_v()] = | ||
42 | gk20a_uc_kind_map[gmmu_pte_kind_z16_ms4_2cz_v()] = | ||
43 | gk20a_uc_kind_map[gmmu_pte_kind_z16_ms8_2cz_v()] = | ||
44 | gk20a_uc_kind_map[gmmu_pte_kind_z16_ms16_2cz_v()] = | ||
45 | gmmu_pte_kind_z16_v(); | ||
46 | |||
47 | gk20a_uc_kind_map[gmmu_pte_kind_c32_ms4_4cbra_v()] = | ||
48 | gk20a_uc_kind_map[gmmu_pte_kind_c64_ms4_4cbra_v()] = | ||
49 | gmmu_pte_kind_generic_16bx2_v(); | ||
50 | |||
51 | /* From gm20b */ | ||
52 | gk20a_uc_kind_map[gmmu_pte_kind_s8_v()] = | ||
53 | gk20a_uc_kind_map[gmmu_pte_kind_s8_2s_v()] = | ||
54 | gmmu_pte_kind_s8_v(); | ||
55 | |||
56 | /* From gk20a */ | ||
57 | gk20a_uc_kind_map[gmmu_pte_kind_z16_v()] = | ||
58 | gk20a_uc_kind_map[gmmu_pte_kind_z16_2c_v()] = | ||
59 | gk20a_uc_kind_map[gmmu_pte_kind_z16_ms2_2c_v()] = | ||
60 | gk20a_uc_kind_map[gmmu_pte_kind_z16_ms4_2c_v()] = | ||
61 | gk20a_uc_kind_map[gmmu_pte_kind_z16_ms8_2c_v()] = | ||
62 | gk20a_uc_kind_map[gmmu_pte_kind_z16_2z_v()] = | ||
63 | gk20a_uc_kind_map[gmmu_pte_kind_z16_ms2_2z_v()] = | ||
64 | gk20a_uc_kind_map[gmmu_pte_kind_z16_ms4_2z_v()] = | ||
65 | gk20a_uc_kind_map[gmmu_pte_kind_z16_ms8_2z_v()] = | ||
66 | gmmu_pte_kind_z16_v(); | ||
67 | |||
68 | gk20a_uc_kind_map[gmmu_pte_kind_s8z24_v()] = | ||
69 | gk20a_uc_kind_map[gmmu_pte_kind_s8z24_2cz_v()] = | ||
70 | gk20a_uc_kind_map[gmmu_pte_kind_s8z24_ms2_2cz_v()] = | ||
71 | gk20a_uc_kind_map[gmmu_pte_kind_s8z24_ms4_2cz_v()] = | ||
72 | gk20a_uc_kind_map[gmmu_pte_kind_s8z24_ms8_2cz_v()] = | ||
73 | gk20a_uc_kind_map[gmmu_pte_kind_s8z24_2cs_v()] = | ||
74 | gk20a_uc_kind_map[gmmu_pte_kind_s8z24_ms2_2cs_v()] = | ||
75 | gk20a_uc_kind_map[gmmu_pte_kind_s8z24_ms4_2cs_v()] = | ||
76 | gk20a_uc_kind_map[gmmu_pte_kind_s8z24_ms8_2cs_v()] = | ||
77 | gmmu_pte_kind_s8z24_v(); | ||
78 | |||
79 | gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms4_vc4_v()] = | ||
80 | gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms4_vc4_2cs_v()] = | ||
81 | gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms4_vc4_2czv_v()] = | ||
82 | gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms4_vc4_2zv_v()] = | ||
83 | gmmu_pte_kind_v8z24_ms4_vc4_v(); | ||
84 | |||
85 | gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms8_vc8_v()] = | ||
86 | gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms8_vc8_2cs_v()] = | ||
87 | gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms8_vc8_2czv_v()] = | ||
88 | gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms8_vc8_2zv_v()] = | ||
89 | gmmu_pte_kind_v8z24_ms8_vc8_v(); | ||
90 | |||
91 | gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms4_vc12_v()] = | ||
92 | gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms4_vc12_2cs_v()] = | ||
93 | gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms4_vc12_2czv_v()] = | ||
94 | gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms4_vc12_2zv_v()] = | ||
95 | gmmu_pte_kind_v8z24_ms4_vc12_v(); | ||
96 | |||
97 | gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms8_vc24_v()] = | ||
98 | gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms8_vc24_2cs_v()] = | ||
99 | gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms8_vc24_2czv_v()] = | ||
100 | gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms8_vc24_2zv_v()] = | ||
101 | gmmu_pte_kind_v8z24_ms8_vc24_v(); | ||
102 | |||
103 | gk20a_uc_kind_map[gmmu_pte_kind_z24s8_v()] = | ||
104 | gk20a_uc_kind_map[gmmu_pte_kind_z24s8_2cs_v()] = | ||
105 | gk20a_uc_kind_map[gmmu_pte_kind_z24s8_ms2_2cs_v()] = | ||
106 | gk20a_uc_kind_map[gmmu_pte_kind_z24s8_ms4_2cs_v()] = | ||
107 | gk20a_uc_kind_map[gmmu_pte_kind_z24s8_ms8_2cs_v()] = | ||
108 | gk20a_uc_kind_map[gmmu_pte_kind_z24s8_2cz_v()] = | ||
109 | gk20a_uc_kind_map[gmmu_pte_kind_z24s8_ms2_2cz_v()] = | ||
110 | gk20a_uc_kind_map[gmmu_pte_kind_z24s8_ms4_2cz_v()] = | ||
111 | gk20a_uc_kind_map[gmmu_pte_kind_z24s8_ms8_2cz_v()] = | ||
112 | gmmu_pte_kind_z24s8_v(); | ||
113 | |||
114 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_v()] = | ||
115 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_2cs_v()] = | ||
116 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_ms2_2cs_v()] = | ||
117 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_ms4_2cs_v()] = | ||
118 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_ms8_2cs_v()] = | ||
119 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_2cz_v()] = | ||
120 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_ms2_2cz_v()] = | ||
121 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_ms4_2cz_v()] = | ||
122 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_ms8_2cz_v()] = | ||
123 | gmmu_pte_kind_zf32_v(); | ||
124 | |||
125 | gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_v()] = | ||
126 | gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_2cs_v()] = | ||
127 | gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_2cszv_v()] = | ||
128 | gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_v(); | ||
129 | |||
130 | gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms4_vc4_v()] = | ||
131 | gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms4_vc4_2cs_v()] = | ||
132 | gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms4_vc4_2cszv_v()] = | ||
133 | gmmu_pte_kind_x8z24_x16v8s8_ms4_vc4_v(); | ||
134 | |||
135 | gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms8_vc8_v()] = | ||
136 | gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms8_vc8_2cs_v()] = | ||
137 | gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms8_vc8_2cszv_v()] = | ||
138 | gmmu_pte_kind_x8z24_x16v8s8_ms8_vc8_v(); | ||
139 | |||
140 | gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_v()] = | ||
141 | gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_2cs_v()] = | ||
142 | gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_2cszv_v()] = | ||
143 | gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_v(); | ||
144 | |||
145 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_v()] = | ||
146 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_2cs_v()] = | ||
147 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_2cszv_v()] = | ||
148 | gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_v(); | ||
149 | |||
150 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms4_vc4_v()] = | ||
151 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms4_vc4_2cs_v()] = | ||
152 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms4_vc4_2cszv_v()] = | ||
153 | gmmu_pte_kind_zf32_x16v8s8_ms4_vc4_v(); | ||
154 | |||
155 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms8_vc8_v()] = | ||
156 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms8_vc8_2cs_v()] = | ||
157 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms8_vc8_2cszv_v()] = | ||
158 | gmmu_pte_kind_zf32_x16v8s8_ms8_vc8_v(); | ||
159 | |||
160 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_v()] = | ||
161 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_2cs_v()] = | ||
162 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_2cszv_v()] = | ||
163 | gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_v(); | ||
164 | |||
165 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_v()] = | ||
166 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_2cszv_v()] = | ||
167 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_ms2_2cszv_v()] = | ||
168 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_ms4_2cszv_v()] = | ||
169 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_ms8_2cszv_v()] = | ||
170 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_2cs_v()] = | ||
171 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_ms2_2cs_v()] = | ||
172 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_ms4_2cs_v()] = | ||
173 | gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_ms8_2cs_v()] = | ||
174 | gmmu_pte_kind_zf32_x24s8_v(); | ||
175 | |||
176 | gk20a_uc_kind_map[gmmu_pte_kind_c32_2c_v()] = | ||
177 | gk20a_uc_kind_map[gmmu_pte_kind_c32_2cba_v()] = | ||
178 | gk20a_uc_kind_map[gmmu_pte_kind_c32_2cra_v()] = | ||
179 | gk20a_uc_kind_map[gmmu_pte_kind_c32_2bra_v()] = | ||
180 | gk20a_uc_kind_map[gmmu_pte_kind_c32_ms2_2c_v()] = | ||
181 | gk20a_uc_kind_map[gmmu_pte_kind_c32_ms2_2cra_v()] = | ||
182 | gk20a_uc_kind_map[gmmu_pte_kind_c32_ms4_2c_v()] = | ||
183 | gk20a_uc_kind_map[gmmu_pte_kind_c32_ms4_2cbr_v()] = | ||
184 | gk20a_uc_kind_map[gmmu_pte_kind_c32_ms4_2cba_v()] = | ||
185 | gk20a_uc_kind_map[gmmu_pte_kind_c32_ms4_2cra_v()] = | ||
186 | gk20a_uc_kind_map[gmmu_pte_kind_c32_ms4_2bra_v()] = | ||
187 | gk20a_uc_kind_map[gmmu_pte_kind_c32_ms8_ms16_2c_v()] = | ||
188 | gk20a_uc_kind_map[gmmu_pte_kind_c32_ms8_ms16_2cra_v()] = | ||
189 | gk20a_uc_kind_map[gmmu_pte_kind_c64_2c_v()] = | ||
190 | gk20a_uc_kind_map[gmmu_pte_kind_c64_2cbr_v()] = | ||
191 | gk20a_uc_kind_map[gmmu_pte_kind_c64_2cba_v()] = | ||
192 | gk20a_uc_kind_map[gmmu_pte_kind_c64_2cra_v()] = | ||
193 | gk20a_uc_kind_map[gmmu_pte_kind_c64_2bra_v()] = | ||
194 | gk20a_uc_kind_map[gmmu_pte_kind_c64_ms2_2c_v()] = | ||
195 | gk20a_uc_kind_map[gmmu_pte_kind_c64_ms2_2cra_v()] = | ||
196 | gk20a_uc_kind_map[gmmu_pte_kind_c64_ms4_2c_v()] = | ||
197 | gk20a_uc_kind_map[gmmu_pte_kind_c64_ms4_2cbr_v()] = | ||
198 | gk20a_uc_kind_map[gmmu_pte_kind_c64_ms4_2cba_v()] = | ||
199 | gk20a_uc_kind_map[gmmu_pte_kind_c64_ms4_2cra_v()] = | ||
200 | gk20a_uc_kind_map[gmmu_pte_kind_c64_ms4_2bra_v()] = | ||
201 | gk20a_uc_kind_map[gmmu_pte_kind_c64_ms8_ms16_2c_v()] = | ||
202 | gk20a_uc_kind_map[gmmu_pte_kind_c64_ms8_ms16_2cra_v()] = | ||
203 | gk20a_uc_kind_map[gmmu_pte_kind_c128_2c_v()] = | ||
204 | gk20a_uc_kind_map[gmmu_pte_kind_c128_2cr_v()] = | ||
205 | gk20a_uc_kind_map[gmmu_pte_kind_c128_ms2_2c_v()] = | ||
206 | gk20a_uc_kind_map[gmmu_pte_kind_c128_ms2_2cr_v()] = | ||
207 | gk20a_uc_kind_map[gmmu_pte_kind_c128_ms4_2c_v()] = | ||
208 | gk20a_uc_kind_map[gmmu_pte_kind_c128_ms4_2cr_v()] = | ||
209 | gk20a_uc_kind_map[gmmu_pte_kind_c128_ms8_ms16_2c_v()] = | ||
210 | gk20a_uc_kind_map[gmmu_pte_kind_c128_ms8_ms16_2cr_v()] = | ||
211 | gmmu_pte_kind_generic_16bx2_v(); | ||
212 | |||
213 | gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms4_vc4_2czv_v()] = | ||
214 | gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms4_vc4_2cs_v()] = | ||
215 | gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms4_vc4_2zv_v()] = | ||
216 | gmmu_pte_kind_z24v8_ms4_vc4_v(); | ||
217 | |||
218 | gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms4_vc12_2czv_v()] = | ||
219 | gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms4_vc12_2cs_v()] = | ||
220 | gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms4_vc12_2zv_v()] = | ||
221 | gmmu_pte_kind_z24v8_ms4_vc12_v(); | ||
222 | |||
223 | gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms8_vc8_2cs_v()] = | ||
224 | gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms8_vc8_2czv_v()] = | ||
225 | gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms8_vc8_2zv_v()] = | ||
226 | gmmu_pte_kind_z24v8_ms8_vc8_v(); | ||
227 | |||
228 | gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms8_vc24_2cs_v()] = | ||
229 | gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms8_vc24_2czv_v()] = | ||
230 | gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms8_vc24_2zv_v()] = | ||
231 | gmmu_pte_kind_z24v8_ms8_vc24_v(); | ||
232 | |||
233 | gk20a_uc_kind_map[gmmu_pte_kind_x8c24_v()] = | ||
234 | gmmu_pte_kind_x8c24_v(); | ||
235 | } | ||
236 | |||
237 | static noinline_for_stack bool gp10b_kind_supported(u8 k) | ||
238 | { | ||
239 | return /* From gp10b */ | ||
240 | (k >= gmmu_pte_kind_z16_2cz_v() && | ||
241 | k <= gmmu_pte_kind_z16_ms8_2cz_v()) | ||
242 | || k == gmmu_pte_kind_z16_ms16_2cz_v() | ||
243 | || k == gmmu_pte_kind_c32_ms4_4cbra_v() | ||
244 | || k == gmmu_pte_kind_c64_ms4_4cbra_v() | ||
245 | /* From gm20b */ | ||
246 | || (k == gmmu_pte_kind_smsked_message_v()) | ||
247 | || (k >= gmmu_pte_kind_s8_v() && | ||
248 | k <= gmmu_pte_kind_s8_2s_v()) | ||
249 | /* From gk20a */ | ||
250 | || gk20a_kind_work_creation(k) | ||
251 | || (k == gmmu_pte_kind_invalid_v()) | ||
252 | || (k == gmmu_pte_kind_pitch_v()) | ||
253 | || (k >= gmmu_pte_kind_z16_v() && | ||
254 | k <= gmmu_pte_kind_z16_ms8_2c_v()) | ||
255 | || (k >= gmmu_pte_kind_z16_2z_v() && | ||
256 | k <= gmmu_pte_kind_z16_ms8_2z_v()) | ||
257 | || (k == gmmu_pte_kind_s8z24_v()) | ||
258 | || (k >= gmmu_pte_kind_s8z24_2cz_v() && | ||
259 | k <= gmmu_pte_kind_s8z24_ms8_2cz_v()) | ||
260 | || (k >= gmmu_pte_kind_v8z24_ms4_vc12_v() && | ||
261 | k <= gmmu_pte_kind_v8z24_ms8_vc24_v()) | ||
262 | || (k >= gmmu_pte_kind_v8z24_ms4_vc12_2czv_v() && | ||
263 | k <= gmmu_pte_kind_v8z24_ms8_vc24_2zv_v()) | ||
264 | || (k == gmmu_pte_kind_z24s8_v()) | ||
265 | || (k >= gmmu_pte_kind_z24s8_2cz_v() && | ||
266 | k <= gmmu_pte_kind_z24s8_ms8_2cz_v()) | ||
267 | || (k == gmmu_pte_kind_zf32_v()) | ||
268 | || (k >= gmmu_pte_kind_zf32_2cz_v() && | ||
269 | k <= gmmu_pte_kind_zf32_ms8_2cz_v()) | ||
270 | || (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_v() && | ||
271 | k <= gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_v()) | ||
272 | || (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_2cszv_v() && | ||
273 | k <= gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_v()) | ||
274 | || (k >= gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_2cszv_v() && | ||
275 | k <= gmmu_pte_kind_zf32_x24s8_v()) | ||
276 | || (k >= gmmu_pte_kind_zf32_x24s8_2cszv_v() && | ||
277 | k <= gmmu_pte_kind_zf32_x24s8_ms8_2cszv_v()) | ||
278 | || (k == gmmu_pte_kind_generic_16bx2_v()) | ||
279 | || (k == gmmu_pte_kind_c32_2c_v()) | ||
280 | || (k == gmmu_pte_kind_c32_2cra_v()) | ||
281 | || (k == gmmu_pte_kind_c32_ms2_2c_v()) | ||
282 | || (k == gmmu_pte_kind_c32_ms2_2cra_v()) | ||
283 | || (k >= gmmu_pte_kind_c32_ms4_2c_v() && | ||
284 | k <= gmmu_pte_kind_c32_ms4_2cbr_v()) | ||
285 | || (k >= gmmu_pte_kind_c32_ms4_2cra_v() && | ||
286 | k <= gmmu_pte_kind_c64_2c_v()) | ||
287 | || (k == gmmu_pte_kind_c64_2cra_v()) | ||
288 | || (k == gmmu_pte_kind_c64_ms2_2c_v()) | ||
289 | || (k == gmmu_pte_kind_c64_ms2_2cra_v()) | ||
290 | || (k >= gmmu_pte_kind_c64_ms4_2c_v() && | ||
291 | k <= gmmu_pte_kind_c64_ms4_2cbr_v()) | ||
292 | || (k >= gmmu_pte_kind_c64_ms4_2cra_v() && | ||
293 | k <= gmmu_pte_kind_c128_ms8_ms16_2cr_v()) | ||
294 | || (k == gmmu_pte_kind_pitch_no_swizzle_v()); | ||
295 | } | ||
296 | |||
297 | static noinline_for_stack bool gp10b_kind_z(u8 k) | ||
298 | { | ||
299 | return /* From gp10b */ | ||
300 | (k >= gmmu_pte_kind_z16_2cz_v() && | ||
301 | k <= gmmu_pte_kind_z16_ms8_2cz_v()) | ||
302 | || (k == gmmu_pte_kind_z16_ms16_2cz_v()) | ||
303 | /* From gm20b */ | ||
304 | || (k >= gmmu_pte_kind_s8_v() && | ||
305 | k <= gmmu_pte_kind_s8_2s_v()) | ||
306 | /* From gk20a */ | ||
307 | || (k >= gmmu_pte_kind_z16_v() && | ||
308 | k <= gmmu_pte_kind_v8z24_ms8_vc24_v()) | ||
309 | || (k >= gmmu_pte_kind_v8z24_ms4_vc12_1zv_v() && | ||
310 | k <= gmmu_pte_kind_v8z24_ms8_vc24_2cs_v()) | ||
311 | || (k >= gmmu_pte_kind_v8z24_ms4_vc12_2czv_v() && | ||
312 | k <= gmmu_pte_kind_z24v8_ms8_vc24_v()) | ||
313 | || (k >= gmmu_pte_kind_z24v8_ms4_vc12_1zv_v() && | ||
314 | k <= gmmu_pte_kind_z24v8_ms8_vc24_2cs_v()) | ||
315 | || (k >= gmmu_pte_kind_z24v8_ms4_vc12_2czv_v() && | ||
316 | k <= gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_1cs_v()) | ||
317 | || (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_1zv_v() && | ||
318 | k <= gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_1cs_v()) | ||
319 | || (k >= gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_1zv_v() && | ||
320 | k <= gmmu_pte_kind_zf32_x24s8_ms16_1cs_v()); | ||
321 | } | ||
322 | |||
323 | static noinline_for_stack bool gp10b_kind_c(u8 k) | ||
324 | { | ||
325 | return gk20a_kind_work_creation(k) | ||
326 | || (k == gmmu_pte_kind_pitch_v()) | ||
327 | || (k == gmmu_pte_kind_generic_16bx2_v()) | ||
328 | || (k >= gmmu_pte_kind_c32_2c_v() && | ||
329 | k <= gmmu_pte_kind_c32_ms2_2cbr_v()) | ||
330 | || (k == gmmu_pte_kind_c32_ms2_2cra_v()) | ||
331 | || (k >= gmmu_pte_kind_c32_ms4_2c_v() && | ||
332 | k <= gmmu_pte_kind_c64_ms2_2cbr_v()) | ||
333 | || (k == gmmu_pte_kind_c64_ms2_2cra_v()) | ||
334 | || (k >= gmmu_pte_kind_c64_ms4_2c_v() && | ||
335 | k <= gmmu_pte_kind_pitch_no_swizzle_v()); | ||
336 | } | ||
337 | |||
338 | static noinline_for_stack bool gp10b_kind_compressible(u8 k) | ||
339 | { | ||
340 | return /* From gp10b */ | ||
341 | (k >= gmmu_pte_kind_z16_2cz_v() && | ||
342 | k <= gmmu_pte_kind_z16_ms8_2cz_v()) | ||
343 | || (k == gmmu_pte_kind_z16_ms16_2cz_v()) | ||
344 | || (k >= gmmu_pte_kind_z16_4cz_v() && | ||
345 | k <= gmmu_pte_kind_z16_ms16_4cz_v()) | ||
346 | || (k == gmmu_pte_kind_c32_ms4_4cbra_v()) | ||
347 | || (k == gmmu_pte_kind_c64_ms4_4cbra_v()) | ||
348 | /* From gm20b */ | ||
349 | || (k >= gmmu_pte_kind_s8_v() && | ||
350 | k <= gmmu_pte_kind_s8_2s_v()) | ||
351 | /* From gk20a */ | ||
352 | || (k >= gmmu_pte_kind_z16_2c_v() && | ||
353 | k <= gmmu_pte_kind_z16_ms16_4cz_v()) | ||
354 | || (k >= gmmu_pte_kind_s8z24_1z_v() && | ||
355 | k <= gmmu_pte_kind_s8z24_ms16_4cszv_v()) | ||
356 | || (k >= gmmu_pte_kind_v8z24_ms4_vc12_1zv_v() && | ||
357 | k <= gmmu_pte_kind_v8z24_ms8_vc24_2cs_v()) | ||
358 | || (k >= gmmu_pte_kind_v8z24_ms4_vc12_2czv_v() && | ||
359 | k <= gmmu_pte_kind_v8z24_ms8_vc24_4cszv_v()) | ||
360 | || (k >= gmmu_pte_kind_z24s8_1z_v() && | ||
361 | k <= gmmu_pte_kind_z24s8_ms16_4cszv_v()) | ||
362 | || (k >= gmmu_pte_kind_z24v8_ms4_vc12_1zv_v() && | ||
363 | k <= gmmu_pte_kind_z24v8_ms8_vc24_2cs_v()) | ||
364 | || (k >= gmmu_pte_kind_z24v8_ms4_vc12_2czv_v() && | ||
365 | k <= gmmu_pte_kind_z24v8_ms8_vc24_4cszv_v()) | ||
366 | || (k >= gmmu_pte_kind_zf32_1z_v() && | ||
367 | k <= gmmu_pte_kind_zf32_ms16_2cz_v()) | ||
368 | || (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_1cs_v() && | ||
369 | k <= gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_1cs_v()) | ||
370 | || (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_1zv_v() && | ||
371 | k <= gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_2cszv_v()) | ||
372 | || (k >= gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_1cs_v() && | ||
373 | k <= gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_1cs_v()) | ||
374 | || (k >= gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_1zv_v() && | ||
375 | k <= gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_2cszv_v()) | ||
376 | || (k >= gmmu_pte_kind_zf32_x24s8_1cs_v() && | ||
377 | k <= gmmu_pte_kind_zf32_x24s8_ms16_1cs_v()) | ||
378 | || (k >= gmmu_pte_kind_zf32_x24s8_2cszv_v() && | ||
379 | k <= gmmu_pte_kind_c32_ms2_2cbr_v()) | ||
380 | || (k == gmmu_pte_kind_c32_ms2_2cra_v()) | ||
381 | || (k >= gmmu_pte_kind_c32_ms4_2c_v() && | ||
382 | k <= gmmu_pte_kind_c64_ms2_2cbr_v()) | ||
383 | || (k == gmmu_pte_kind_c64_ms2_2cra_v()) | ||
384 | || (k >= gmmu_pte_kind_c64_ms4_2c_v() && | ||
385 | k <= gmmu_pte_kind_c128_ms8_ms16_2cr_v()); | ||
386 | } | ||
387 | |||
388 | static noinline_for_stack bool gp10b_kind_zbc(u8 k) | ||
389 | { | ||
390 | return /* From gp10b */ | ||
391 | (k >= gmmu_pte_kind_z16_2cz_v() && | ||
392 | k <= gmmu_pte_kind_z16_ms8_2cz_v()) | ||
393 | || (k == gmmu_pte_kind_z16_ms16_2cz_v()) | ||
394 | || (k == gmmu_pte_kind_c32_ms4_4cbra_v()) | ||
395 | || (k == gmmu_pte_kind_c64_ms4_4cbra_v()) | ||
396 | /* From gm20b */ | ||
397 | || (k >= gmmu_pte_kind_s8_v() && | ||
398 | k <= gmmu_pte_kind_s8_2s_v()) | ||
399 | /* From gk20a */ | ||
400 | || (k >= gmmu_pte_kind_z16_2c_v() && | ||
401 | k <= gmmu_pte_kind_z16_ms16_2c_v()) | ||
402 | || (k >= gmmu_pte_kind_z16_4cz_v() && | ||
403 | k <= gmmu_pte_kind_z16_ms16_4cz_v()) | ||
404 | || (k >= gmmu_pte_kind_s8z24_2cz_v() && | ||
405 | k <= gmmu_pte_kind_s8z24_ms16_4cszv_v()) | ||
406 | || (k >= gmmu_pte_kind_v8z24_ms4_vc12_2cs_v() && | ||
407 | k <= gmmu_pte_kind_v8z24_ms8_vc24_2cs_v()) | ||
408 | || (k >= gmmu_pte_kind_v8z24_ms4_vc12_2czv_v() && | ||
409 | k <= gmmu_pte_kind_v8z24_ms8_vc24_2czv_v()) | ||
410 | || (k >= gmmu_pte_kind_v8z24_ms4_vc12_4cszv_v() && | ||
411 | k <= gmmu_pte_kind_v8z24_ms8_vc24_4cszv_v()) | ||
412 | || (k >= gmmu_pte_kind_z24s8_2cs_v() && | ||
413 | k <= gmmu_pte_kind_z24s8_ms16_4cszv_v()) | ||
414 | || (k >= gmmu_pte_kind_z24v8_ms4_vc12_2cs_v() && | ||
415 | k <= gmmu_pte_kind_z24v8_ms8_vc24_2cs_v()) | ||
416 | || (k >= gmmu_pte_kind_z24v8_ms4_vc12_2czv_v() && | ||
417 | k <= gmmu_pte_kind_z24v8_ms8_vc24_2czv_v()) | ||
418 | || (k >= gmmu_pte_kind_z24v8_ms4_vc12_4cszv_v() && | ||
419 | k <= gmmu_pte_kind_z24v8_ms8_vc24_4cszv_v()) | ||
420 | || (k >= gmmu_pte_kind_zf32_2cs_v() && | ||
421 | k <= gmmu_pte_kind_zf32_ms16_2cz_v()) | ||
422 | || (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_1cs_v() && | ||
423 | k <= gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_1cs_v()) | ||
424 | || (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_1czv_v() && | ||
425 | k <= gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_2cszv_v()) | ||
426 | || (k >= gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_1cs_v() && | ||
427 | k <= gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_1cs_v()) | ||
428 | || (k >= gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_1czv_v() && | ||
429 | k <= gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_2cszv_v()) | ||
430 | || (k >= gmmu_pte_kind_zf32_x24s8_1cs_v() && | ||
431 | k <= gmmu_pte_kind_zf32_x24s8_ms16_1cs_v()) | ||
432 | || (k >= gmmu_pte_kind_zf32_x24s8_2cszv_v() && | ||
433 | k <= gmmu_pte_kind_c32_2cra_v()) | ||
434 | || (k >= gmmu_pte_kind_c32_ms2_2c_v() && | ||
435 | k <= gmmu_pte_kind_c32_ms2_2cbr_v()) | ||
436 | || (k == gmmu_pte_kind_c32_ms2_2cra_v()) | ||
437 | || (k >= gmmu_pte_kind_c32_ms4_2c_v() && | ||
438 | k <= gmmu_pte_kind_c32_ms4_2cra_v()) | ||
439 | || (k >= gmmu_pte_kind_c32_ms8_ms16_2c_v() && | ||
440 | k <= gmmu_pte_kind_c64_2cra_v()) | ||
441 | || (k >= gmmu_pte_kind_c64_ms2_2c_v() && | ||
442 | k <= gmmu_pte_kind_c64_ms2_2cbr_v()) | ||
443 | || (k == gmmu_pte_kind_c64_ms2_2cra_v()) | ||
444 | || (k >= gmmu_pte_kind_c64_ms4_2c_v() && | ||
445 | k <= gmmu_pte_kind_c64_ms4_2cra_v()) | ||
446 | || (k >= gmmu_pte_kind_c64_ms8_ms16_2c_v() && | ||
447 | k <= gmmu_pte_kind_c128_ms8_ms16_2cr_v()); | ||
448 | } | ||
449 | |||
450 | void gp10b_init_kind_attr(void) | ||
451 | { | ||
452 | u16 k; | ||
453 | |||
454 | for (k = 0; k < NV_KIND_ATTR_SIZE; k++) { | ||
455 | if (gp10b_kind_supported((u8)k)) | ||
456 | gk20a_kind_attr[k] |= GK20A_KIND_ATTR_SUPPORTED; | ||
457 | if (gp10b_kind_compressible((u8)k)) | ||
458 | gk20a_kind_attr[k] |= GK20A_KIND_ATTR_COMPRESSIBLE; | ||
459 | if (gp10b_kind_z((u8)k)) | ||
460 | gk20a_kind_attr[k] |= GK20A_KIND_ATTR_Z; | ||
461 | if (gp10b_kind_c((u8)k)) | ||
462 | gk20a_kind_attr[k] |= GK20A_KIND_ATTR_C; | ||
463 | if (gp10b_kind_zbc((u8)k)) | ||
464 | gk20a_kind_attr[k] |= GK20A_KIND_ATTR_ZBC; | ||
465 | } | ||
466 | } | ||
467 | |||
468 | unsigned int gp10b_fb_compression_page_size(struct gk20a *g) | 28 | unsigned int gp10b_fb_compression_page_size(struct gk20a *g) |
469 | { | 29 | { |
470 | return SZ_64K; | 30 | return SZ_64K; |
diff --git a/drivers/gpu/nvgpu/gp10b/fb_gp10b.h b/drivers/gpu/nvgpu/gp10b/fb_gp10b.h index 12f6178b..52aa2a75 100644 --- a/drivers/gpu/nvgpu/gp10b/fb_gp10b.h +++ b/drivers/gpu/nvgpu/gp10b/fb_gp10b.h | |||
@@ -26,8 +26,6 @@ | |||
26 | #define _NVGPU_GP10B_FB | 26 | #define _NVGPU_GP10B_FB |
27 | struct gk20a; | 27 | struct gk20a; |
28 | 28 | ||
29 | noinline_for_stack void gp10b_init_uncompressed_kind_map(void); | ||
30 | void gp10b_init_kind_attr(void); | ||
31 | unsigned int gp10b_fb_compression_page_size(struct gk20a *g); | 29 | unsigned int gp10b_fb_compression_page_size(struct gk20a *g); |
32 | unsigned int gp10b_fb_compressible_page_size(struct gk20a *g); | 30 | unsigned int gp10b_fb_compressible_page_size(struct gk20a *g); |
33 | 31 | ||
diff --git a/drivers/gpu/nvgpu/gp10b/hal_gp10b.c b/drivers/gpu/nvgpu/gp10b/hal_gp10b.c index 7ed91e02..d0aedd1b 100644 --- a/drivers/gpu/nvgpu/gp10b/hal_gp10b.c +++ b/drivers/gpu/nvgpu/gp10b/hal_gp10b.c | |||
@@ -743,9 +743,6 @@ int gp10b_init_hal(struct gk20a *g) | |||
743 | g->pmu_lsf_pmu_wpr_init_done = 0; | 743 | g->pmu_lsf_pmu_wpr_init_done = 0; |
744 | g->bootstrap_owner = LSF_BOOTSTRAP_OWNER_DEFAULT; | 744 | g->bootstrap_owner = LSF_BOOTSTRAP_OWNER_DEFAULT; |
745 | 745 | ||
746 | gp10b_init_uncompressed_kind_map(); | ||
747 | gp10b_init_kind_attr(); | ||
748 | |||
749 | g->name = "gp10b"; | 746 | g->name = "gp10b"; |
750 | 747 | ||
751 | return 0; | 748 | return 0; |
diff --git a/drivers/gpu/nvgpu/include/nvgpu/linux/vm.h b/drivers/gpu/nvgpu/include/nvgpu/linux/vm.h index d810f95f..dee8fa09 100644 --- a/drivers/gpu/nvgpu/include/nvgpu/linux/vm.h +++ b/drivers/gpu/nvgpu/include/nvgpu/linux/vm.h | |||
@@ -38,25 +38,13 @@ struct vm_gk20a; | |||
38 | struct vm_gk20a_mapping_batch; | 38 | struct vm_gk20a_mapping_batch; |
39 | struct nvgpu_vm_area; | 39 | struct nvgpu_vm_area; |
40 | 40 | ||
41 | /* NVGPU_AS_MAP_BUFFER_FLAGS_DIRECT_KIND_CTRL must be set */ | ||
41 | int nvgpu_vm_map_linux(struct vm_gk20a *vm, | 42 | int nvgpu_vm_map_linux(struct vm_gk20a *vm, |
42 | struct dma_buf *dmabuf, | 43 | struct dma_buf *dmabuf, |
43 | u64 offset_align, | 44 | u64 offset_align, |
44 | u32 flags, | 45 | u32 flags, |
45 | |||
46 | /* | ||
47 | * compressible kind if | ||
48 | * NVGPU_AS_MAP_BUFFER_FLAGS_DIRECT_KIND_CTRL is | ||
49 | * specified, otherwise just the kind | ||
50 | */ | ||
51 | s16 compr_kind, | 46 | s16 compr_kind, |
52 | |||
53 | /* | ||
54 | * incompressible kind if | ||
55 | * NVGPU_AS_MAP_BUFFER_FLAGS_DIRECT_KIND_CTRL is | ||
56 | * specified, otherwise ignored | ||
57 | */ | ||
58 | s16 incompr_kind, | 47 | s16 incompr_kind, |
59 | |||
60 | int rw_flag, | 48 | int rw_flag, |
61 | u64 buffer_offset, | 49 | u64 buffer_offset, |
62 | u64 mapping_size, | 50 | u64 mapping_size, |
@@ -66,12 +54,7 @@ int nvgpu_vm_map_linux(struct vm_gk20a *vm, | |||
66 | /* | 54 | /* |
67 | * Notes: | 55 | * Notes: |
68 | * - Batch may be NULL if map op is not part of a batch. | 56 | * - Batch may be NULL if map op is not part of a batch. |
69 | * - If NVGPU_AS_MAP_BUFFER_FLAGS_DIRECT_KIND_CTRL is set, | 57 | * - NVGPU_AS_MAP_BUFFER_FLAGS_DIRECT_KIND_CTRL must be set |
70 | * compr_kind and incompr_kind work as explained in nvgpu.h. | ||
71 | * - If NVGPU_AS_MAP_BUFFER_FLAGS_DIRECT_KIND_CTRL is NOT set, | ||
72 | * compr_kind holds the kind and kernel will figure out whether | ||
73 | * it is a compressible or incompressible kind. If compressible, kernel will | ||
74 | * also figure out the incompressible counterpart or return an error. | ||
75 | */ | 58 | */ |
76 | int nvgpu_vm_map_buffer(struct vm_gk20a *vm, | 59 | int nvgpu_vm_map_buffer(struct vm_gk20a *vm, |
77 | int dmabuf_fd, | 60 | int dmabuf_fd, |
diff --git a/drivers/gpu/nvgpu/include/nvgpu/vm.h b/drivers/gpu/nvgpu/include/nvgpu/vm.h index 801fb8ed..10a7f7ce 100644 --- a/drivers/gpu/nvgpu/include/nvgpu/vm.h +++ b/drivers/gpu/nvgpu/include/nvgpu/vm.h | |||
@@ -127,10 +127,8 @@ struct nvgpu_ctag_buffer_info { | |||
127 | enum gmmu_pgsz_gk20a pgsz_idx; | 127 | enum gmmu_pgsz_gk20a pgsz_idx; |
128 | u32 flags; | 128 | u32 flags; |
129 | 129 | ||
130 | u8 kind_v; | 130 | s16 compr_kind; |
131 | u8 uc_kind_v; | 131 | s16 incompr_kind; |
132 | bool use_kind_v; | ||
133 | bool use_uc_kind_v; | ||
134 | 132 | ||
135 | u32 ctag_lines; | 133 | u32 ctag_lines; |
136 | }; | 134 | }; |
@@ -202,10 +200,8 @@ void nvgpu_vm_put(struct vm_gk20a *vm); | |||
202 | int vm_aspace_id(struct vm_gk20a *vm); | 200 | int vm_aspace_id(struct vm_gk20a *vm); |
203 | int nvgpu_big_pages_possible(struct vm_gk20a *vm, u64 base, u64 size); | 201 | int nvgpu_big_pages_possible(struct vm_gk20a *vm, u64 base, u64 size); |
204 | 202 | ||
205 | int nvgpu_vm_init_kind_info(struct nvgpu_ctag_buffer_info *binfo, | 203 | int nvgpu_vm_compute_compression(struct vm_gk20a *vm, |
206 | s16 compr_kind, s16 incompr_kind); | 204 | struct nvgpu_ctag_buffer_info *binfo); |
207 | int nvgpu_vm_compute_kind_and_compression(struct vm_gk20a *vm, | ||
208 | struct nvgpu_ctag_buffer_info *binfo); | ||
209 | 205 | ||
210 | /* batching eliminates redundant cache flushes and invalidates */ | 206 | /* batching eliminates redundant cache flushes and invalidates */ |
211 | void nvgpu_vm_mapping_batch_start(struct vm_gk20a_mapping_batch *batch); | 207 | void nvgpu_vm_mapping_batch_start(struct vm_gk20a_mapping_batch *batch); |
diff --git a/drivers/gpu/nvgpu/vgpu/gm20b/vgpu_hal_gm20b.c b/drivers/gpu/nvgpu/vgpu/gm20b/vgpu_hal_gm20b.c index fd89e23c..3fc8b73b 100644 --- a/drivers/gpu/nvgpu/vgpu/gm20b/vgpu_hal_gm20b.c +++ b/drivers/gpu/nvgpu/vgpu/gm20b/vgpu_hal_gm20b.c | |||
@@ -584,9 +584,6 @@ int vgpu_gm20b_init_hal(struct gk20a *g) | |||
584 | g->pmu_lsf_pmu_wpr_init_done = 0; | 584 | g->pmu_lsf_pmu_wpr_init_done = 0; |
585 | g->bootstrap_owner = LSF_BOOTSTRAP_OWNER_DEFAULT; | 585 | g->bootstrap_owner = LSF_BOOTSTRAP_OWNER_DEFAULT; |
586 | 586 | ||
587 | gm20b_init_uncompressed_kind_map(); | ||
588 | gm20b_init_kind_attr(); | ||
589 | |||
590 | g->name = "gm20b"; | 587 | g->name = "gm20b"; |
591 | 588 | ||
592 | c->twod_class = FERMI_TWOD_A; | 589 | c->twod_class = FERMI_TWOD_A; |
diff --git a/drivers/gpu/nvgpu/vgpu/gp10b/vgpu_hal_gp10b.c b/drivers/gpu/nvgpu/vgpu/gp10b/vgpu_hal_gp10b.c index fcb05937..e4e5a885 100644 --- a/drivers/gpu/nvgpu/vgpu/gp10b/vgpu_hal_gp10b.c +++ b/drivers/gpu/nvgpu/vgpu/gp10b/vgpu_hal_gp10b.c | |||
@@ -626,9 +626,6 @@ int vgpu_gp10b_init_hal(struct gk20a *g) | |||
626 | g->pmu_lsf_pmu_wpr_init_done = 0; | 626 | g->pmu_lsf_pmu_wpr_init_done = 0; |
627 | g->bootstrap_owner = LSF_BOOTSTRAP_OWNER_DEFAULT; | 627 | g->bootstrap_owner = LSF_BOOTSTRAP_OWNER_DEFAULT; |
628 | 628 | ||
629 | gp10b_init_uncompressed_kind_map(); | ||
630 | gp10b_init_kind_attr(); | ||
631 | |||
632 | g->name = "gp10b"; | 629 | g->name = "gp10b"; |
633 | 630 | ||
634 | c->twod_class = FERMI_TWOD_A; | 631 | c->twod_class = FERMI_TWOD_A; |