summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gm20b
diff options
context:
space:
mode:
authorSunny He <suhe@nvidia.com>2017-07-31 19:10:14 -0400
committermobile promotions <svcmobile_promotions@nvidia.com>2017-08-14 18:55:13 -0400
commitd5a5fb3563121a4904be9185914c563070ffd021 (patch)
tree08a5fb65b912caf1555e62b031881fe1807bbd52 /drivers/gpu/nvgpu/gm20b
parent36f02cf49729b32aa241cb9f1f235749da681dd1 (diff)
gpu: nvgpu: remove kind map inheritance
Currently, the kind map initialization inherits from earlier chips' kind map definitions and simply adds on newly supported features. This is dangerous as changes in older architectures may affect newer architectures in unpredictable ways. This patch removes inheritance between subsequent architectures' kind map initializations. Jira NVGPU-74 Change-Id: Ie5c33f613db7ba109564b4cb2312e47ee3332afc Signed-off-by: Sunny He <suhe@nvidia.com> Reviewed-on: https://git-master.nvidia.com/r/1537745 Reviewed-by: Automatic_Commit_Validation_User Reviewed-by: svccoveritychecker <svccoveritychecker@nvidia.com> GVS: Gerrit_Virtual_Submit Reviewed-by: Terje Bergstrom <tbergstrom@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/gm20b')
-rw-r--r--drivers/gpu/nvgpu/gm20b/fb_gm20b.c383
1 files changed, 366 insertions, 17 deletions
diff --git a/drivers/gpu/nvgpu/gm20b/fb_gm20b.c b/drivers/gpu/nvgpu/gm20b/fb_gm20b.c
index 8b811cbe..47b4313b 100644
--- a/drivers/gpu/nvgpu/gm20b/fb_gm20b.c
+++ b/drivers/gpu/nvgpu/gm20b/fb_gm20b.c
@@ -33,53 +33,402 @@ static void fb_gm20b_init_fs_state(struct gk20a *g)
33 g->ltc_count); 33 g->ltc_count);
34} 34}
35 35
36void gm20b_init_uncompressed_kind_map(void) 36noinline_for_stack void gm20b_init_uncompressed_kind_map(void)
37{ 37{
38 gk20a_init_uncompressed_kind_map(); 38 int i;
39 39
40 for (i = 0; i < 256; i++)
41 gk20a_uc_kind_map[i] = gmmu_pte_kind_invalid_v();
42
43 /* From gm20b */
40 gk20a_uc_kind_map[gmmu_pte_kind_s8_v()] = 44 gk20a_uc_kind_map[gmmu_pte_kind_s8_v()] =
41 gk20a_uc_kind_map[gmmu_pte_kind_s8_2s_v()] = 45 gk20a_uc_kind_map[gmmu_pte_kind_s8_2s_v()] =
42 gmmu_pte_kind_s8_v(); 46 gmmu_pte_kind_s8_v();
47
48 /* From gk20a */
49 gk20a_uc_kind_map[gmmu_pte_kind_z16_v()] =
50 gk20a_uc_kind_map[gmmu_pte_kind_z16_2c_v()] =
51 gk20a_uc_kind_map[gmmu_pte_kind_z16_ms2_2c_v()] =
52 gk20a_uc_kind_map[gmmu_pte_kind_z16_ms4_2c_v()] =
53 gk20a_uc_kind_map[gmmu_pte_kind_z16_ms8_2c_v()] =
54 gk20a_uc_kind_map[gmmu_pte_kind_z16_2z_v()] =
55 gk20a_uc_kind_map[gmmu_pte_kind_z16_ms2_2z_v()] =
56 gk20a_uc_kind_map[gmmu_pte_kind_z16_ms4_2z_v()] =
57 gk20a_uc_kind_map[gmmu_pte_kind_z16_ms8_2z_v()] =
58 gmmu_pte_kind_z16_v();
59
60 gk20a_uc_kind_map[gmmu_pte_kind_s8z24_v()] =
61 gk20a_uc_kind_map[gmmu_pte_kind_s8z24_2cz_v()] =
62 gk20a_uc_kind_map[gmmu_pte_kind_s8z24_ms2_2cz_v()] =
63 gk20a_uc_kind_map[gmmu_pte_kind_s8z24_ms4_2cz_v()] =
64 gk20a_uc_kind_map[gmmu_pte_kind_s8z24_ms8_2cz_v()] =
65 gk20a_uc_kind_map[gmmu_pte_kind_s8z24_2cs_v()] =
66 gk20a_uc_kind_map[gmmu_pte_kind_s8z24_ms2_2cs_v()] =
67 gk20a_uc_kind_map[gmmu_pte_kind_s8z24_ms4_2cs_v()] =
68 gk20a_uc_kind_map[gmmu_pte_kind_s8z24_ms8_2cs_v()] =
69 gmmu_pte_kind_s8z24_v();
70
71 gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms4_vc4_v()] =
72 gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms4_vc4_2cs_v()] =
73 gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms4_vc4_2czv_v()] =
74 gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms4_vc4_2zv_v()] =
75 gmmu_pte_kind_v8z24_ms4_vc4_v();
76
77 gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms8_vc8_v()] =
78 gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms8_vc8_2cs_v()] =
79 gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms8_vc8_2czv_v()] =
80 gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms8_vc8_2zv_v()] =
81 gmmu_pte_kind_v8z24_ms8_vc8_v();
82
83 gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms4_vc12_v()] =
84 gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms4_vc12_2cs_v()] =
85 gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms4_vc12_2czv_v()] =
86 gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms4_vc12_2zv_v()] =
87 gmmu_pte_kind_v8z24_ms4_vc12_v();
88
89 gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms8_vc24_v()] =
90 gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms8_vc24_2cs_v()] =
91 gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms8_vc24_2czv_v()] =
92 gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms8_vc24_2zv_v()] =
93 gmmu_pte_kind_v8z24_ms8_vc24_v();
94
95 gk20a_uc_kind_map[gmmu_pte_kind_z24s8_v()] =
96 gk20a_uc_kind_map[gmmu_pte_kind_z24s8_2cs_v()] =
97 gk20a_uc_kind_map[gmmu_pte_kind_z24s8_ms2_2cs_v()] =
98 gk20a_uc_kind_map[gmmu_pte_kind_z24s8_ms4_2cs_v()] =
99 gk20a_uc_kind_map[gmmu_pte_kind_z24s8_ms8_2cs_v()] =
100 gk20a_uc_kind_map[gmmu_pte_kind_z24s8_2cz_v()] =
101 gk20a_uc_kind_map[gmmu_pte_kind_z24s8_ms2_2cz_v()] =
102 gk20a_uc_kind_map[gmmu_pte_kind_z24s8_ms4_2cz_v()] =
103 gk20a_uc_kind_map[gmmu_pte_kind_z24s8_ms8_2cz_v()] =
104 gmmu_pte_kind_z24s8_v();
105
106 gk20a_uc_kind_map[gmmu_pte_kind_zf32_v()] =
107 gk20a_uc_kind_map[gmmu_pte_kind_zf32_2cs_v()] =
108 gk20a_uc_kind_map[gmmu_pte_kind_zf32_ms2_2cs_v()] =
109 gk20a_uc_kind_map[gmmu_pte_kind_zf32_ms4_2cs_v()] =
110 gk20a_uc_kind_map[gmmu_pte_kind_zf32_ms8_2cs_v()] =
111 gk20a_uc_kind_map[gmmu_pte_kind_zf32_2cz_v()] =
112 gk20a_uc_kind_map[gmmu_pte_kind_zf32_ms2_2cz_v()] =
113 gk20a_uc_kind_map[gmmu_pte_kind_zf32_ms4_2cz_v()] =
114 gk20a_uc_kind_map[gmmu_pte_kind_zf32_ms8_2cz_v()] =
115 gmmu_pte_kind_zf32_v();
116
117 gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_v()] =
118 gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_2cs_v()] =
119 gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_2cszv_v()] =
120 gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_v();
121
122 gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms4_vc4_v()] =
123 gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms4_vc4_2cs_v()] =
124 gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms4_vc4_2cszv_v()] =
125 gmmu_pte_kind_x8z24_x16v8s8_ms4_vc4_v();
126
127 gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms8_vc8_v()] =
128 gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms8_vc8_2cs_v()] =
129 gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms8_vc8_2cszv_v()] =
130 gmmu_pte_kind_x8z24_x16v8s8_ms8_vc8_v();
131
132 gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_v()] =
133 gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_2cs_v()] =
134 gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_2cszv_v()] =
135 gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_v();
136
137 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_v()] =
138 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_2cs_v()] =
139 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_2cszv_v()] =
140 gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_v();
141
142 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms4_vc4_v()] =
143 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms4_vc4_2cs_v()] =
144 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms4_vc4_2cszv_v()] =
145 gmmu_pte_kind_zf32_x16v8s8_ms4_vc4_v();
146
147 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms8_vc8_v()] =
148 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms8_vc8_2cs_v()] =
149 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms8_vc8_2cszv_v()] =
150 gmmu_pte_kind_zf32_x16v8s8_ms8_vc8_v();
151
152 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_v()] =
153 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_2cs_v()] =
154 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_2cszv_v()] =
155 gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_v();
156
157 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_v()] =
158 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_2cszv_v()] =
159 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_ms2_2cszv_v()] =
160 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_ms4_2cszv_v()] =
161 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_ms8_2cszv_v()] =
162 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_2cs_v()] =
163 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_ms2_2cs_v()] =
164 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_ms4_2cs_v()] =
165 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_ms8_2cs_v()] =
166 gmmu_pte_kind_zf32_x24s8_v();
167
168 gk20a_uc_kind_map[gmmu_pte_kind_c32_2c_v()] =
169 gk20a_uc_kind_map[gmmu_pte_kind_c32_2cba_v()] =
170 gk20a_uc_kind_map[gmmu_pte_kind_c32_2cra_v()] =
171 gk20a_uc_kind_map[gmmu_pte_kind_c32_2bra_v()] =
172 gk20a_uc_kind_map[gmmu_pte_kind_c32_ms2_2c_v()] =
173 gk20a_uc_kind_map[gmmu_pte_kind_c32_ms2_2cra_v()] =
174 gk20a_uc_kind_map[gmmu_pte_kind_c32_ms4_2c_v()] =
175 gk20a_uc_kind_map[gmmu_pte_kind_c32_ms4_2cbr_v()] =
176 gk20a_uc_kind_map[gmmu_pte_kind_c32_ms4_2cba_v()] =
177 gk20a_uc_kind_map[gmmu_pte_kind_c32_ms4_2cra_v()] =
178 gk20a_uc_kind_map[gmmu_pte_kind_c32_ms4_2bra_v()] =
179 gk20a_uc_kind_map[gmmu_pte_kind_c32_ms8_ms16_2c_v()] =
180 gk20a_uc_kind_map[gmmu_pte_kind_c32_ms8_ms16_2cra_v()] =
181 gk20a_uc_kind_map[gmmu_pte_kind_c64_2c_v()] =
182 gk20a_uc_kind_map[gmmu_pte_kind_c64_2cbr_v()] =
183 gk20a_uc_kind_map[gmmu_pte_kind_c64_2cba_v()] =
184 gk20a_uc_kind_map[gmmu_pte_kind_c64_2cra_v()] =
185 gk20a_uc_kind_map[gmmu_pte_kind_c64_2bra_v()] =
186 gk20a_uc_kind_map[gmmu_pte_kind_c64_ms2_2c_v()] =
187 gk20a_uc_kind_map[gmmu_pte_kind_c64_ms2_2cra_v()] =
188 gk20a_uc_kind_map[gmmu_pte_kind_c64_ms4_2c_v()] =
189 gk20a_uc_kind_map[gmmu_pte_kind_c64_ms4_2cbr_v()] =
190 gk20a_uc_kind_map[gmmu_pte_kind_c64_ms4_2cba_v()] =
191 gk20a_uc_kind_map[gmmu_pte_kind_c64_ms4_2cra_v()] =
192 gk20a_uc_kind_map[gmmu_pte_kind_c64_ms4_2bra_v()] =
193 gk20a_uc_kind_map[gmmu_pte_kind_c64_ms8_ms16_2c_v()] =
194 gk20a_uc_kind_map[gmmu_pte_kind_c64_ms8_ms16_2cra_v()] =
195 gk20a_uc_kind_map[gmmu_pte_kind_c128_2c_v()] =
196 gk20a_uc_kind_map[gmmu_pte_kind_c128_2cr_v()] =
197 gk20a_uc_kind_map[gmmu_pte_kind_c128_ms2_2c_v()] =
198 gk20a_uc_kind_map[gmmu_pte_kind_c128_ms2_2cr_v()] =
199 gk20a_uc_kind_map[gmmu_pte_kind_c128_ms4_2c_v()] =
200 gk20a_uc_kind_map[gmmu_pte_kind_c128_ms4_2cr_v()] =
201 gk20a_uc_kind_map[gmmu_pte_kind_c128_ms8_ms16_2c_v()] =
202 gk20a_uc_kind_map[gmmu_pte_kind_c128_ms8_ms16_2cr_v()] =
203 gmmu_pte_kind_generic_16bx2_v();
204
205 gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms4_vc4_2czv_v()] =
206 gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms4_vc4_2cs_v()] =
207 gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms4_vc4_2zv_v()] =
208 gmmu_pte_kind_z24v8_ms4_vc4_v();
209
210 gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms4_vc12_2czv_v()] =
211 gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms4_vc12_2cs_v()] =
212 gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms4_vc12_2zv_v()] =
213 gmmu_pte_kind_z24v8_ms4_vc12_v();
214
215 gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms8_vc8_2cs_v()] =
216 gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms8_vc8_2czv_v()] =
217 gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms8_vc8_2zv_v()] =
218 gmmu_pte_kind_z24v8_ms8_vc8_v();
219
220 gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms8_vc24_2cs_v()] =
221 gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms8_vc24_2czv_v()] =
222 gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms8_vc24_2zv_v()] =
223 gmmu_pte_kind_z24v8_ms8_vc24_v();
224
225 gk20a_uc_kind_map[gmmu_pte_kind_x8c24_v()] =
226 gmmu_pte_kind_x8c24_v();
43} 227}
44 228
45static bool gm20b_kind_supported(u8 k) 229static noinline_for_stack bool gm20b_kind_supported(u8 k)
46{ 230{
47 return k == gmmu_pte_kind_smsked_message_v() 231 return /* From gm20b */
232 (k == gmmu_pte_kind_smsked_message_v())
48 || (k >= gmmu_pte_kind_s8_v() && 233 || (k >= gmmu_pte_kind_s8_v() &&
49 k <= gmmu_pte_kind_s8_2s_v()); 234 k <= gmmu_pte_kind_s8_2s_v())
235 /* From gk20a */
236 || gk20a_kind_work_creation(k)
237 || (k == gmmu_pte_kind_invalid_v())
238 || (k == gmmu_pte_kind_pitch_v())
239 || (k >= gmmu_pte_kind_z16_v() &&
240 k <= gmmu_pte_kind_z16_ms8_2c_v())
241 || (k >= gmmu_pte_kind_z16_2z_v() &&
242 k <= gmmu_pte_kind_z16_ms8_2z_v())
243 || (k == gmmu_pte_kind_s8z24_v())
244 || (k >= gmmu_pte_kind_s8z24_2cz_v() &&
245 k <= gmmu_pte_kind_s8z24_ms8_2cz_v())
246 || (k >= gmmu_pte_kind_v8z24_ms4_vc12_v() &&
247 k <= gmmu_pte_kind_v8z24_ms8_vc24_v())
248 || (k >= gmmu_pte_kind_v8z24_ms4_vc12_2czv_v() &&
249 k <= gmmu_pte_kind_v8z24_ms8_vc24_2zv_v())
250 || (k == gmmu_pte_kind_z24s8_v())
251 || (k >= gmmu_pte_kind_z24s8_2cz_v() &&
252 k <= gmmu_pte_kind_z24s8_ms8_2cz_v())
253 || (k == gmmu_pte_kind_zf32_v())
254 || (k >= gmmu_pte_kind_zf32_2cz_v() &&
255 k <= gmmu_pte_kind_zf32_ms8_2cz_v())
256 || (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_v() &&
257 k <= gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_v())
258 || (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_2cszv_v() &&
259 k <= gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_v())
260 || (k >= gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_2cszv_v() &&
261 k <= gmmu_pte_kind_zf32_x24s8_v())
262 || (k >= gmmu_pte_kind_zf32_x24s8_2cszv_v() &&
263 k <= gmmu_pte_kind_zf32_x24s8_ms8_2cszv_v())
264 || (k == gmmu_pte_kind_generic_16bx2_v())
265 || (k == gmmu_pte_kind_c32_2c_v())
266 || (k == gmmu_pte_kind_c32_2cra_v())
267 || (k == gmmu_pte_kind_c32_ms2_2c_v())
268 || (k == gmmu_pte_kind_c32_ms2_2cra_v())
269 || (k >= gmmu_pte_kind_c32_ms4_2c_v() &&
270 k <= gmmu_pte_kind_c32_ms4_2cbr_v())
271 || (k >= gmmu_pte_kind_c32_ms4_2cra_v() &&
272 k <= gmmu_pte_kind_c64_2c_v())
273 || (k == gmmu_pte_kind_c64_2cra_v())
274 || (k == gmmu_pte_kind_c64_ms2_2c_v())
275 || (k == gmmu_pte_kind_c64_ms2_2cra_v())
276 || (k >= gmmu_pte_kind_c64_ms4_2c_v() &&
277 k <= gmmu_pte_kind_c64_ms4_2cbr_v())
278 || (k >= gmmu_pte_kind_c64_ms4_2cra_v() &&
279 k <= gmmu_pte_kind_c128_ms8_ms16_2cr_v())
280 || (k == gmmu_pte_kind_pitch_no_swizzle_v());
281}
282
283static noinline_for_stack bool gm20b_kind_z(u8 k)
284{
285 return /* From gm20b */
286 (k >= gmmu_pte_kind_s8_v() &&
287 k <= gmmu_pte_kind_s8_2s_v())
288 /* From gk20a */
289 || (k >= gmmu_pte_kind_z16_v() &&
290 k <= gmmu_pte_kind_v8z24_ms8_vc24_v())
291 || (k >= gmmu_pte_kind_v8z24_ms4_vc12_1zv_v() &&
292 k <= gmmu_pte_kind_v8z24_ms8_vc24_2cs_v())
293 || (k >= gmmu_pte_kind_v8z24_ms4_vc12_2czv_v() &&
294 k <= gmmu_pte_kind_z24v8_ms8_vc24_v())
295 || (k >= gmmu_pte_kind_z24v8_ms4_vc12_1zv_v() &&
296 k <= gmmu_pte_kind_z24v8_ms8_vc24_2cs_v())
297 || (k >= gmmu_pte_kind_z24v8_ms4_vc12_2czv_v() &&
298 k <= gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_1cs_v())
299 || (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_1zv_v() &&
300 k <= gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_1cs_v())
301 || (k >= gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_1zv_v() &&
302 k <= gmmu_pte_kind_zf32_x24s8_ms16_1cs_v());
50} 303}
51 304
52static bool gm20b_kind_z(u8 k) 305static noinline_for_stack bool gm20b_kind_c(u8 k)
53{ 306{
54 return (k >= gmmu_pte_kind_s8_v() && 307 return gk20a_kind_work_creation(k)
55 k <= gmmu_pte_kind_s8_2s_v()); 308 || (k == gmmu_pte_kind_pitch_v())
309 || (k == gmmu_pte_kind_generic_16bx2_v())
310 || (k >= gmmu_pte_kind_c32_2c_v() &&
311 k <= gmmu_pte_kind_c32_ms2_2cbr_v())
312 || (k == gmmu_pte_kind_c32_ms2_2cra_v())
313 || (k >= gmmu_pte_kind_c32_ms4_2c_v() &&
314 k <= gmmu_pte_kind_c64_ms2_2cbr_v())
315 || (k == gmmu_pte_kind_c64_ms2_2cra_v())
316 || (k >= gmmu_pte_kind_c64_ms4_2c_v() &&
317 k <= gmmu_pte_kind_pitch_no_swizzle_v());
56} 318}
57 319
58static bool gm20b_kind_compressible(u8 k) 320static noinline_for_stack bool gm20b_kind_compressible(u8 k)
59{ 321{
60 return (k >= gmmu_pte_kind_s8_v() && 322 return /* From gm20b */
61 k <= gmmu_pte_kind_s8_2s_v()); 323 (k >= gmmu_pte_kind_s8_v() &&
324 k <= gmmu_pte_kind_s8_2s_v())
325 /* From gk20a */
326 || (k >= gmmu_pte_kind_z16_2c_v() &&
327 k <= gmmu_pte_kind_z16_ms16_4cz_v())
328 || (k >= gmmu_pte_kind_s8z24_1z_v() &&
329 k <= gmmu_pte_kind_s8z24_ms16_4cszv_v())
330 || (k >= gmmu_pte_kind_v8z24_ms4_vc12_1zv_v() &&
331 k <= gmmu_pte_kind_v8z24_ms8_vc24_2cs_v())
332 || (k >= gmmu_pte_kind_v8z24_ms4_vc12_2czv_v() &&
333 k <= gmmu_pte_kind_v8z24_ms8_vc24_4cszv_v())
334 || (k >= gmmu_pte_kind_z24s8_1z_v() &&
335 k <= gmmu_pte_kind_z24s8_ms16_4cszv_v())
336 || (k >= gmmu_pte_kind_z24v8_ms4_vc12_1zv_v() &&
337 k <= gmmu_pte_kind_z24v8_ms8_vc24_2cs_v())
338 || (k >= gmmu_pte_kind_z24v8_ms4_vc12_2czv_v() &&
339 k <= gmmu_pte_kind_z24v8_ms8_vc24_4cszv_v())
340 || (k >= gmmu_pte_kind_zf32_1z_v() &&
341 k <= gmmu_pte_kind_zf32_ms16_2cz_v())
342 || (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_1cs_v() &&
343 k <= gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_1cs_v())
344 || (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_1zv_v() &&
345 k <= gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_2cszv_v())
346 || (k >= gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_1cs_v() &&
347 k <= gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_1cs_v())
348 || (k >= gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_1zv_v() &&
349 k <= gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_2cszv_v())
350 || (k >= gmmu_pte_kind_zf32_x24s8_1cs_v() &&
351 k <= gmmu_pte_kind_zf32_x24s8_ms16_1cs_v())
352 || (k >= gmmu_pte_kind_zf32_x24s8_2cszv_v() &&
353 k <= gmmu_pte_kind_c32_ms2_2cbr_v())
354 || (k == gmmu_pte_kind_c32_ms2_2cra_v())
355 || (k >= gmmu_pte_kind_c32_ms4_2c_v() &&
356 k <= gmmu_pte_kind_c64_ms2_2cbr_v())
357 || (k == gmmu_pte_kind_c64_ms2_2cra_v())
358 || (k >= gmmu_pte_kind_c64_ms4_2c_v() &&
359 k <= gmmu_pte_kind_c128_ms8_ms16_2cr_v());
62} 360}
63 361
64static bool gm20b_kind_zbc(u8 k) 362static noinline_for_stack bool gm20b_kind_zbc(u8 k)
65{ 363{
66 return (k >= gmmu_pte_kind_s8_v() && 364 return /* From gm20b */
67 k <= gmmu_pte_kind_s8_2s_v()); 365 (k >= gmmu_pte_kind_s8_v() &&
366 k <= gmmu_pte_kind_s8_2s_v())
367 /* From gk20a */
368 || (k >= gmmu_pte_kind_z16_2c_v() &&
369 k <= gmmu_pte_kind_z16_ms16_2c_v())
370 || (k >= gmmu_pte_kind_z16_4cz_v() &&
371 k <= gmmu_pte_kind_z16_ms16_4cz_v())
372 || (k >= gmmu_pte_kind_s8z24_2cz_v() &&
373 k <= gmmu_pte_kind_s8z24_ms16_4cszv_v())
374 || (k >= gmmu_pte_kind_v8z24_ms4_vc12_2cs_v() &&
375 k <= gmmu_pte_kind_v8z24_ms8_vc24_2cs_v())
376 || (k >= gmmu_pte_kind_v8z24_ms4_vc12_2czv_v() &&
377 k <= gmmu_pte_kind_v8z24_ms8_vc24_2czv_v())
378 || (k >= gmmu_pte_kind_v8z24_ms4_vc12_4cszv_v() &&
379 k <= gmmu_pte_kind_v8z24_ms8_vc24_4cszv_v())
380 || (k >= gmmu_pte_kind_z24s8_2cs_v() &&
381 k <= gmmu_pte_kind_z24s8_ms16_4cszv_v())
382 || (k >= gmmu_pte_kind_z24v8_ms4_vc12_2cs_v() &&
383 k <= gmmu_pte_kind_z24v8_ms8_vc24_2cs_v())
384 || (k >= gmmu_pte_kind_z24v8_ms4_vc12_2czv_v() &&
385 k <= gmmu_pte_kind_z24v8_ms8_vc24_2czv_v())
386 || (k >= gmmu_pte_kind_z24v8_ms4_vc12_4cszv_v() &&
387 k <= gmmu_pte_kind_z24v8_ms8_vc24_4cszv_v())
388 || (k >= gmmu_pte_kind_zf32_2cs_v() &&
389 k <= gmmu_pte_kind_zf32_ms16_2cz_v())
390 || (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_1cs_v() &&
391 k <= gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_1cs_v())
392 || (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_1czv_v() &&
393 k <= gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_2cszv_v())
394 || (k >= gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_1cs_v() &&
395 k <= gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_1cs_v())
396 || (k >= gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_1czv_v() &&
397 k <= gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_2cszv_v())
398 || (k >= gmmu_pte_kind_zf32_x24s8_1cs_v() &&
399 k <= gmmu_pte_kind_zf32_x24s8_ms16_1cs_v())
400 || (k >= gmmu_pte_kind_zf32_x24s8_2cszv_v() &&
401 k <= gmmu_pte_kind_c32_2cra_v())
402 || (k >= gmmu_pte_kind_c32_ms2_2c_v() &&
403 k <= gmmu_pte_kind_c32_ms2_2cbr_v())
404 || (k == gmmu_pte_kind_c32_ms2_2cra_v())
405 || (k >= gmmu_pte_kind_c32_ms4_2c_v() &&
406 k <= gmmu_pte_kind_c32_ms4_2cra_v())
407 || (k >= gmmu_pte_kind_c32_ms8_ms16_2c_v() &&
408 k <= gmmu_pte_kind_c64_2cra_v())
409 || (k >= gmmu_pte_kind_c64_ms2_2c_v() &&
410 k <= gmmu_pte_kind_c64_ms2_2cbr_v())
411 || (k == gmmu_pte_kind_c64_ms2_2cra_v())
412 || (k >= gmmu_pte_kind_c64_ms4_2c_v() &&
413 k <= gmmu_pte_kind_c64_ms4_2cra_v())
414 || (k >= gmmu_pte_kind_c64_ms8_ms16_2c_v() &&
415 k <= gmmu_pte_kind_c128_ms8_ms16_2cr_v());
68} 416}
69 417
70void gm20b_init_kind_attr(void) 418void gm20b_init_kind_attr(void)
71{ 419{
72 u16 k; 420 u16 k;
73 421
74 gk20a_init_kind_attr(); 422 for (k = 0; k < NV_KIND_ATTR_SIZE; k++) {
75 423 gk20a_kind_attr[k] = 0;
76 for (k = 0; k < 256; k++) {
77 if (gm20b_kind_supported((u8)k)) 424 if (gm20b_kind_supported((u8)k))
78 gk20a_kind_attr[k] |= GK20A_KIND_ATTR_SUPPORTED; 425 gk20a_kind_attr[k] |= GK20A_KIND_ATTR_SUPPORTED;
79 if (gm20b_kind_compressible((u8)k)) 426 if (gm20b_kind_compressible((u8)k))
80 gk20a_kind_attr[k] |= GK20A_KIND_ATTR_COMPRESSIBLE; 427 gk20a_kind_attr[k] |= GK20A_KIND_ATTR_COMPRESSIBLE;
81 if (gm20b_kind_z((u8)k)) 428 if (gm20b_kind_z((u8)k))
82 gk20a_kind_attr[k] |= GK20A_KIND_ATTR_Z; 429 gk20a_kind_attr[k] |= GK20A_KIND_ATTR_Z;
430 if (gm20b_kind_c((u8)k))
431 gk20a_kind_attr[k] |= GK20A_KIND_ATTR_C;
83 if (gm20b_kind_zbc((u8)k)) 432 if (gm20b_kind_zbc((u8)k))
84 gk20a_kind_attr[k] |= GK20A_KIND_ATTR_ZBC; 433 gk20a_kind_attr[k] |= GK20A_KIND_ATTR_ZBC;
85 } 434 }