summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gk20a/kind_gk20a.c
diff options
context:
space:
mode:
authorSami Kiminki <skiminki@nvidia.com>2017-11-02 16:03:15 -0400
committermobile promotions <svcmobile_promotions@nvidia.com>2017-11-10 11:38:19 -0500
commitcefabe7eb1f1f1dba9692e21ab4f1b88b9163489 (patch)
treeb0f4e6ce64cd408e780925b8b3365b45805b7d95 /drivers/gpu/nvgpu/gk20a/kind_gk20a.c
parentb584bf8aa814d026498ebcee23480d1963338e47 (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/gk20a/kind_gk20a.c')
-rw-r--r--drivers/gpu/nvgpu/gk20a/kind_gk20a.c414
1 files changed, 0 insertions, 414 deletions
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 */
38static 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
87static 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
105static 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
120static 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
158static 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
210u8 gk20a_uc_kind_map[256];
211void 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
397u16 gk20a_kind_attr[NV_KIND_ATTR_SIZE];
398void 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}