summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gp10b/fb_gp10b.c
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/gp10b/fb_gp10b.c
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/gp10b/fb_gp10b.c')
-rw-r--r--drivers/gpu/nvgpu/gp10b/fb_gp10b.c418
1 files changed, 394 insertions, 24 deletions
diff --git a/drivers/gpu/nvgpu/gp10b/fb_gp10b.c b/drivers/gpu/nvgpu/gp10b/fb_gp10b.c
index 06cd94f2..8ba9ff8e 100644
--- a/drivers/gpu/nvgpu/gp10b/fb_gp10b.c
+++ b/drivers/gpu/nvgpu/gp10b/fb_gp10b.c
@@ -20,8 +20,14 @@
20 20
21#include <nvgpu/hw/gp10b/hw_gmmu_gp10b.h> 21#include <nvgpu/hw/gp10b/hw_gmmu_gp10b.h>
22 22
23static void gp10b_init_uncompressed_kind_map(void) 23static noinline_for_stack void gp10b_init_uncompressed_kind_map(void)
24{ 24{
25 int i;
26
27 for (i = 0; i < 256; i++)
28 gk20a_uc_kind_map[i] = gmmu_pte_kind_invalid_v();
29
30 /* From gp10b */
25 gk20a_uc_kind_map[gmmu_pte_kind_z16_2cz_v()] = 31 gk20a_uc_kind_map[gmmu_pte_kind_z16_2cz_v()] =
26 gk20a_uc_kind_map[gmmu_pte_kind_z16_ms2_2cz_v()] = 32 gk20a_uc_kind_map[gmmu_pte_kind_z16_ms2_2cz_v()] =
27 gk20a_uc_kind_map[gmmu_pte_kind_z16_ms4_2cz_v()] = 33 gk20a_uc_kind_map[gmmu_pte_kind_z16_ms4_2cz_v()] =
@@ -32,55 +38,419 @@ static void gp10b_init_uncompressed_kind_map(void)
32 gk20a_uc_kind_map[gmmu_pte_kind_c32_ms4_4cbra_v()] = 38 gk20a_uc_kind_map[gmmu_pte_kind_c32_ms4_4cbra_v()] =
33 gk20a_uc_kind_map[gmmu_pte_kind_c64_ms4_4cbra_v()] = 39 gk20a_uc_kind_map[gmmu_pte_kind_c64_ms4_4cbra_v()] =
34 gmmu_pte_kind_generic_16bx2_v(); 40 gmmu_pte_kind_generic_16bx2_v();
41
42 /* From gm20b */
43 gk20a_uc_kind_map[gmmu_pte_kind_s8_v()] =
44 gk20a_uc_kind_map[gmmu_pte_kind_s8_2s_v()] =
45 gmmu_pte_kind_s8_v();
46
47 /* From gk20a */
48 gk20a_uc_kind_map[gmmu_pte_kind_z16_v()] =
49 gk20a_uc_kind_map[gmmu_pte_kind_z16_2c_v()] =
50 gk20a_uc_kind_map[gmmu_pte_kind_z16_ms2_2c_v()] =
51 gk20a_uc_kind_map[gmmu_pte_kind_z16_ms4_2c_v()] =
52 gk20a_uc_kind_map[gmmu_pte_kind_z16_ms8_2c_v()] =
53 gk20a_uc_kind_map[gmmu_pte_kind_z16_2z_v()] =
54 gk20a_uc_kind_map[gmmu_pte_kind_z16_ms2_2z_v()] =
55 gk20a_uc_kind_map[gmmu_pte_kind_z16_ms4_2z_v()] =
56 gk20a_uc_kind_map[gmmu_pte_kind_z16_ms8_2z_v()] =
57 gmmu_pte_kind_z16_v();
58
59 gk20a_uc_kind_map[gmmu_pte_kind_s8z24_v()] =
60 gk20a_uc_kind_map[gmmu_pte_kind_s8z24_2cz_v()] =
61 gk20a_uc_kind_map[gmmu_pte_kind_s8z24_ms2_2cz_v()] =
62 gk20a_uc_kind_map[gmmu_pte_kind_s8z24_ms4_2cz_v()] =
63 gk20a_uc_kind_map[gmmu_pte_kind_s8z24_ms8_2cz_v()] =
64 gk20a_uc_kind_map[gmmu_pte_kind_s8z24_2cs_v()] =
65 gk20a_uc_kind_map[gmmu_pte_kind_s8z24_ms2_2cs_v()] =
66 gk20a_uc_kind_map[gmmu_pte_kind_s8z24_ms4_2cs_v()] =
67 gk20a_uc_kind_map[gmmu_pte_kind_s8z24_ms8_2cs_v()] =
68 gmmu_pte_kind_s8z24_v();
69
70 gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms4_vc4_v()] =
71 gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms4_vc4_2cs_v()] =
72 gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms4_vc4_2czv_v()] =
73 gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms4_vc4_2zv_v()] =
74 gmmu_pte_kind_v8z24_ms4_vc4_v();
75
76 gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms8_vc8_v()] =
77 gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms8_vc8_2cs_v()] =
78 gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms8_vc8_2czv_v()] =
79 gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms8_vc8_2zv_v()] =
80 gmmu_pte_kind_v8z24_ms8_vc8_v();
81
82 gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms4_vc12_v()] =
83 gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms4_vc12_2cs_v()] =
84 gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms4_vc12_2czv_v()] =
85 gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms4_vc12_2zv_v()] =
86 gmmu_pte_kind_v8z24_ms4_vc12_v();
87
88 gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms8_vc24_v()] =
89 gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms8_vc24_2cs_v()] =
90 gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms8_vc24_2czv_v()] =
91 gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms8_vc24_2zv_v()] =
92 gmmu_pte_kind_v8z24_ms8_vc24_v();
93
94 gk20a_uc_kind_map[gmmu_pte_kind_z24s8_v()] =
95 gk20a_uc_kind_map[gmmu_pte_kind_z24s8_2cs_v()] =
96 gk20a_uc_kind_map[gmmu_pte_kind_z24s8_ms2_2cs_v()] =
97 gk20a_uc_kind_map[gmmu_pte_kind_z24s8_ms4_2cs_v()] =
98 gk20a_uc_kind_map[gmmu_pte_kind_z24s8_ms8_2cs_v()] =
99 gk20a_uc_kind_map[gmmu_pte_kind_z24s8_2cz_v()] =
100 gk20a_uc_kind_map[gmmu_pte_kind_z24s8_ms2_2cz_v()] =
101 gk20a_uc_kind_map[gmmu_pte_kind_z24s8_ms4_2cz_v()] =
102 gk20a_uc_kind_map[gmmu_pte_kind_z24s8_ms8_2cz_v()] =
103 gmmu_pte_kind_z24s8_v();
104
105 gk20a_uc_kind_map[gmmu_pte_kind_zf32_v()] =
106 gk20a_uc_kind_map[gmmu_pte_kind_zf32_2cs_v()] =
107 gk20a_uc_kind_map[gmmu_pte_kind_zf32_ms2_2cs_v()] =
108 gk20a_uc_kind_map[gmmu_pte_kind_zf32_ms4_2cs_v()] =
109 gk20a_uc_kind_map[gmmu_pte_kind_zf32_ms8_2cs_v()] =
110 gk20a_uc_kind_map[gmmu_pte_kind_zf32_2cz_v()] =
111 gk20a_uc_kind_map[gmmu_pte_kind_zf32_ms2_2cz_v()] =
112 gk20a_uc_kind_map[gmmu_pte_kind_zf32_ms4_2cz_v()] =
113 gk20a_uc_kind_map[gmmu_pte_kind_zf32_ms8_2cz_v()] =
114 gmmu_pte_kind_zf32_v();
115
116 gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_v()] =
117 gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_2cs_v()] =
118 gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_2cszv_v()] =
119 gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_v();
120
121 gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms4_vc4_v()] =
122 gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms4_vc4_2cs_v()] =
123 gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms4_vc4_2cszv_v()] =
124 gmmu_pte_kind_x8z24_x16v8s8_ms4_vc4_v();
125
126 gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms8_vc8_v()] =
127 gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms8_vc8_2cs_v()] =
128 gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms8_vc8_2cszv_v()] =
129 gmmu_pte_kind_x8z24_x16v8s8_ms8_vc8_v();
130
131 gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_v()] =
132 gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_2cs_v()] =
133 gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_2cszv_v()] =
134 gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_v();
135
136 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_v()] =
137 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_2cs_v()] =
138 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_2cszv_v()] =
139 gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_v();
140
141 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms4_vc4_v()] =
142 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms4_vc4_2cs_v()] =
143 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms4_vc4_2cszv_v()] =
144 gmmu_pte_kind_zf32_x16v8s8_ms4_vc4_v();
145
146 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms8_vc8_v()] =
147 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms8_vc8_2cs_v()] =
148 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms8_vc8_2cszv_v()] =
149 gmmu_pte_kind_zf32_x16v8s8_ms8_vc8_v();
150
151 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_v()] =
152 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_2cs_v()] =
153 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_2cszv_v()] =
154 gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_v();
155
156 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_v()] =
157 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_2cszv_v()] =
158 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_ms2_2cszv_v()] =
159 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_ms4_2cszv_v()] =
160 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_ms8_2cszv_v()] =
161 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_2cs_v()] =
162 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_ms2_2cs_v()] =
163 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_ms4_2cs_v()] =
164 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_ms8_2cs_v()] =
165 gmmu_pte_kind_zf32_x24s8_v();
166
167 gk20a_uc_kind_map[gmmu_pte_kind_c32_2c_v()] =
168 gk20a_uc_kind_map[gmmu_pte_kind_c32_2cba_v()] =
169 gk20a_uc_kind_map[gmmu_pte_kind_c32_2cra_v()] =
170 gk20a_uc_kind_map[gmmu_pte_kind_c32_2bra_v()] =
171 gk20a_uc_kind_map[gmmu_pte_kind_c32_ms2_2c_v()] =
172 gk20a_uc_kind_map[gmmu_pte_kind_c32_ms2_2cra_v()] =
173 gk20a_uc_kind_map[gmmu_pte_kind_c32_ms4_2c_v()] =
174 gk20a_uc_kind_map[gmmu_pte_kind_c32_ms4_2cbr_v()] =
175 gk20a_uc_kind_map[gmmu_pte_kind_c32_ms4_2cba_v()] =
176 gk20a_uc_kind_map[gmmu_pte_kind_c32_ms4_2cra_v()] =
177 gk20a_uc_kind_map[gmmu_pte_kind_c32_ms4_2bra_v()] =
178 gk20a_uc_kind_map[gmmu_pte_kind_c32_ms8_ms16_2c_v()] =
179 gk20a_uc_kind_map[gmmu_pte_kind_c32_ms8_ms16_2cra_v()] =
180 gk20a_uc_kind_map[gmmu_pte_kind_c64_2c_v()] =
181 gk20a_uc_kind_map[gmmu_pte_kind_c64_2cbr_v()] =
182 gk20a_uc_kind_map[gmmu_pte_kind_c64_2cba_v()] =
183 gk20a_uc_kind_map[gmmu_pte_kind_c64_2cra_v()] =
184 gk20a_uc_kind_map[gmmu_pte_kind_c64_2bra_v()] =
185 gk20a_uc_kind_map[gmmu_pte_kind_c64_ms2_2c_v()] =
186 gk20a_uc_kind_map[gmmu_pte_kind_c64_ms2_2cra_v()] =
187 gk20a_uc_kind_map[gmmu_pte_kind_c64_ms4_2c_v()] =
188 gk20a_uc_kind_map[gmmu_pte_kind_c64_ms4_2cbr_v()] =
189 gk20a_uc_kind_map[gmmu_pte_kind_c64_ms4_2cba_v()] =
190 gk20a_uc_kind_map[gmmu_pte_kind_c64_ms4_2cra_v()] =
191 gk20a_uc_kind_map[gmmu_pte_kind_c64_ms4_2bra_v()] =
192 gk20a_uc_kind_map[gmmu_pte_kind_c64_ms8_ms16_2c_v()] =
193 gk20a_uc_kind_map[gmmu_pte_kind_c64_ms8_ms16_2cra_v()] =
194 gk20a_uc_kind_map[gmmu_pte_kind_c128_2c_v()] =
195 gk20a_uc_kind_map[gmmu_pte_kind_c128_2cr_v()] =
196 gk20a_uc_kind_map[gmmu_pte_kind_c128_ms2_2c_v()] =
197 gk20a_uc_kind_map[gmmu_pte_kind_c128_ms2_2cr_v()] =
198 gk20a_uc_kind_map[gmmu_pte_kind_c128_ms4_2c_v()] =
199 gk20a_uc_kind_map[gmmu_pte_kind_c128_ms4_2cr_v()] =
200 gk20a_uc_kind_map[gmmu_pte_kind_c128_ms8_ms16_2c_v()] =
201 gk20a_uc_kind_map[gmmu_pte_kind_c128_ms8_ms16_2cr_v()] =
202 gmmu_pte_kind_generic_16bx2_v();
203
204 gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms4_vc4_2czv_v()] =
205 gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms4_vc4_2cs_v()] =
206 gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms4_vc4_2zv_v()] =
207 gmmu_pte_kind_z24v8_ms4_vc4_v();
208
209 gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms4_vc12_2czv_v()] =
210 gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms4_vc12_2cs_v()] =
211 gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms4_vc12_2zv_v()] =
212 gmmu_pte_kind_z24v8_ms4_vc12_v();
213
214 gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms8_vc8_2cs_v()] =
215 gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms8_vc8_2czv_v()] =
216 gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms8_vc8_2zv_v()] =
217 gmmu_pte_kind_z24v8_ms8_vc8_v();
218
219 gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms8_vc24_2cs_v()] =
220 gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms8_vc24_2czv_v()] =
221 gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms8_vc24_2zv_v()] =
222 gmmu_pte_kind_z24v8_ms8_vc24_v();
223
224 gk20a_uc_kind_map[gmmu_pte_kind_x8c24_v()] =
225 gmmu_pte_kind_x8c24_v();
35} 226}
36 227
37static bool gp10b_kind_supported(u8 k) 228static noinline_for_stack bool gp10b_kind_supported(u8 k)
38{ 229{
39 return (k >= gmmu_pte_kind_z16_2cz_v() && 230 return /* From gp10b */
40 k <= gmmu_pte_kind_z16_ms8_2cz_v()) 231 (k >= gmmu_pte_kind_z16_2cz_v() &&
232 k <= gmmu_pte_kind_z16_ms8_2cz_v())
41 || k == gmmu_pte_kind_z16_ms16_2cz_v() 233 || k == gmmu_pte_kind_z16_ms16_2cz_v()
42 || k == gmmu_pte_kind_c32_ms4_4cbra_v() 234 || k == gmmu_pte_kind_c32_ms4_4cbra_v()
43 || k == gmmu_pte_kind_c64_ms4_4cbra_v(); 235 || k == gmmu_pte_kind_c64_ms4_4cbra_v()
236 /* From gm20b */
237 || (k == gmmu_pte_kind_smsked_message_v())
238 || (k >= gmmu_pte_kind_s8_v() &&
239 k <= gmmu_pte_kind_s8_2s_v())
240 /* From gk20a */
241 || gk20a_kind_work_creation(k)
242 || (k == gmmu_pte_kind_invalid_v())
243 || (k == gmmu_pte_kind_pitch_v())
244 || (k >= gmmu_pte_kind_z16_v() &&
245 k <= gmmu_pte_kind_z16_ms8_2c_v())
246 || (k >= gmmu_pte_kind_z16_2z_v() &&
247 k <= gmmu_pte_kind_z16_ms8_2z_v())
248 || (k == gmmu_pte_kind_s8z24_v())
249 || (k >= gmmu_pte_kind_s8z24_2cz_v() &&
250 k <= gmmu_pte_kind_s8z24_ms8_2cz_v())
251 || (k >= gmmu_pte_kind_v8z24_ms4_vc12_v() &&
252 k <= gmmu_pte_kind_v8z24_ms8_vc24_v())
253 || (k >= gmmu_pte_kind_v8z24_ms4_vc12_2czv_v() &&
254 k <= gmmu_pte_kind_v8z24_ms8_vc24_2zv_v())
255 || (k == gmmu_pte_kind_z24s8_v())
256 || (k >= gmmu_pte_kind_z24s8_2cz_v() &&
257 k <= gmmu_pte_kind_z24s8_ms8_2cz_v())
258 || (k == gmmu_pte_kind_zf32_v())
259 || (k >= gmmu_pte_kind_zf32_2cz_v() &&
260 k <= gmmu_pte_kind_zf32_ms8_2cz_v())
261 || (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_v() &&
262 k <= gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_v())
263 || (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_2cszv_v() &&
264 k <= gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_v())
265 || (k >= gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_2cszv_v() &&
266 k <= gmmu_pte_kind_zf32_x24s8_v())
267 || (k >= gmmu_pte_kind_zf32_x24s8_2cszv_v() &&
268 k <= gmmu_pte_kind_zf32_x24s8_ms8_2cszv_v())
269 || (k == gmmu_pte_kind_generic_16bx2_v())
270 || (k == gmmu_pte_kind_c32_2c_v())
271 || (k == gmmu_pte_kind_c32_2cra_v())
272 || (k == gmmu_pte_kind_c32_ms2_2c_v())
273 || (k == gmmu_pte_kind_c32_ms2_2cra_v())
274 || (k >= gmmu_pte_kind_c32_ms4_2c_v() &&
275 k <= gmmu_pte_kind_c32_ms4_2cbr_v())
276 || (k >= gmmu_pte_kind_c32_ms4_2cra_v() &&
277 k <= gmmu_pte_kind_c64_2c_v())
278 || (k == gmmu_pte_kind_c64_2cra_v())
279 || (k == gmmu_pte_kind_c64_ms2_2c_v())
280 || (k == gmmu_pte_kind_c64_ms2_2cra_v())
281 || (k >= gmmu_pte_kind_c64_ms4_2c_v() &&
282 k <= gmmu_pte_kind_c64_ms4_2cbr_v())
283 || (k >= gmmu_pte_kind_c64_ms4_2cra_v() &&
284 k <= gmmu_pte_kind_c128_ms8_ms16_2cr_v())
285 || (k == gmmu_pte_kind_pitch_no_swizzle_v());
286}
287
288static noinline_for_stack bool gp10b_kind_z(u8 k)
289{
290 return /* From gp10b */
291 (k >= gmmu_pte_kind_z16_2cz_v() &&
292 k <= gmmu_pte_kind_z16_ms8_2cz_v())
293 || (k == gmmu_pte_kind_z16_ms16_2cz_v())
294 /* From gm20b */
295 || (k >= gmmu_pte_kind_s8_v() &&
296 k <= gmmu_pte_kind_s8_2s_v())
297 /* From gk20a */
298 || (k >= gmmu_pte_kind_z16_v() &&
299 k <= gmmu_pte_kind_v8z24_ms8_vc24_v())
300 || (k >= gmmu_pte_kind_v8z24_ms4_vc12_1zv_v() &&
301 k <= gmmu_pte_kind_v8z24_ms8_vc24_2cs_v())
302 || (k >= gmmu_pte_kind_v8z24_ms4_vc12_2czv_v() &&
303 k <= gmmu_pte_kind_z24v8_ms8_vc24_v())
304 || (k >= gmmu_pte_kind_z24v8_ms4_vc12_1zv_v() &&
305 k <= gmmu_pte_kind_z24v8_ms8_vc24_2cs_v())
306 || (k >= gmmu_pte_kind_z24v8_ms4_vc12_2czv_v() &&
307 k <= gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_1cs_v())
308 || (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_1zv_v() &&
309 k <= gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_1cs_v())
310 || (k >= gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_1zv_v() &&
311 k <= gmmu_pte_kind_zf32_x24s8_ms16_1cs_v());
44} 312}
45 313
46static bool gp10b_kind_z(u8 k) 314static noinline_for_stack bool gp10b_kind_c(u8 k)
47{ 315{
48 return (k >= gmmu_pte_kind_z16_2cz_v() && 316 return gk20a_kind_work_creation(k)
49 k <= gmmu_pte_kind_z16_ms8_2cz_v()) || 317 || (k == gmmu_pte_kind_pitch_v())
50 k == gmmu_pte_kind_z16_ms16_2cz_v(); 318 || (k == gmmu_pte_kind_generic_16bx2_v())
319 || (k >= gmmu_pte_kind_c32_2c_v() &&
320 k <= gmmu_pte_kind_c32_ms2_2cbr_v())
321 || (k == gmmu_pte_kind_c32_ms2_2cra_v())
322 || (k >= gmmu_pte_kind_c32_ms4_2c_v() &&
323 k <= gmmu_pte_kind_c64_ms2_2cbr_v())
324 || (k == gmmu_pte_kind_c64_ms2_2cra_v())
325 || (k >= gmmu_pte_kind_c64_ms4_2c_v() &&
326 k <= gmmu_pte_kind_pitch_no_swizzle_v());
51} 327}
52 328
53static bool gp10b_kind_compressible(u8 k) 329static noinline_for_stack bool gp10b_kind_compressible(u8 k)
54{ 330{
55 return (k >= gmmu_pte_kind_z16_2cz_v() && 331 return /* From gp10b */
56 k <= gmmu_pte_kind_z16_ms8_2cz_v()) || 332 (k >= gmmu_pte_kind_z16_2cz_v() &&
57 k == gmmu_pte_kind_z16_ms16_2cz_v() || 333 k <= gmmu_pte_kind_z16_ms8_2cz_v())
58 (k >= gmmu_pte_kind_z16_4cz_v() && 334 || (k == gmmu_pte_kind_z16_ms16_2cz_v())
59 k <= gmmu_pte_kind_z16_ms16_4cz_v()) || 335 || (k >= gmmu_pte_kind_z16_4cz_v() &&
60 k == gmmu_pte_kind_c32_ms4_4cbra_v() || 336 k <= gmmu_pte_kind_z16_ms16_4cz_v())
61 k == gmmu_pte_kind_c64_ms4_4cbra_v(); 337 || (k == gmmu_pte_kind_c32_ms4_4cbra_v())
338 || (k == gmmu_pte_kind_c64_ms4_4cbra_v())
339 /* From gm20b */
340 || (k >= gmmu_pte_kind_s8_v() &&
341 k <= gmmu_pte_kind_s8_2s_v())
342 /* From gk20a */
343 || (k >= gmmu_pte_kind_z16_2c_v() &&
344 k <= gmmu_pte_kind_z16_ms16_4cz_v())
345 || (k >= gmmu_pte_kind_s8z24_1z_v() &&
346 k <= gmmu_pte_kind_s8z24_ms16_4cszv_v())
347 || (k >= gmmu_pte_kind_v8z24_ms4_vc12_1zv_v() &&
348 k <= gmmu_pte_kind_v8z24_ms8_vc24_2cs_v())
349 || (k >= gmmu_pte_kind_v8z24_ms4_vc12_2czv_v() &&
350 k <= gmmu_pte_kind_v8z24_ms8_vc24_4cszv_v())
351 || (k >= gmmu_pte_kind_z24s8_1z_v() &&
352 k <= gmmu_pte_kind_z24s8_ms16_4cszv_v())
353 || (k >= gmmu_pte_kind_z24v8_ms4_vc12_1zv_v() &&
354 k <= gmmu_pte_kind_z24v8_ms8_vc24_2cs_v())
355 || (k >= gmmu_pte_kind_z24v8_ms4_vc12_2czv_v() &&
356 k <= gmmu_pte_kind_z24v8_ms8_vc24_4cszv_v())
357 || (k >= gmmu_pte_kind_zf32_1z_v() &&
358 k <= gmmu_pte_kind_zf32_ms16_2cz_v())
359 || (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_1cs_v() &&
360 k <= gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_1cs_v())
361 || (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_1zv_v() &&
362 k <= gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_2cszv_v())
363 || (k >= gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_1cs_v() &&
364 k <= gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_1cs_v())
365 || (k >= gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_1zv_v() &&
366 k <= gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_2cszv_v())
367 || (k >= gmmu_pte_kind_zf32_x24s8_1cs_v() &&
368 k <= gmmu_pte_kind_zf32_x24s8_ms16_1cs_v())
369 || (k >= gmmu_pte_kind_zf32_x24s8_2cszv_v() &&
370 k <= gmmu_pte_kind_c32_ms2_2cbr_v())
371 || (k == gmmu_pte_kind_c32_ms2_2cra_v())
372 || (k >= gmmu_pte_kind_c32_ms4_2c_v() &&
373 k <= gmmu_pte_kind_c64_ms2_2cbr_v())
374 || (k == gmmu_pte_kind_c64_ms2_2cra_v())
375 || (k >= gmmu_pte_kind_c64_ms4_2c_v() &&
376 k <= gmmu_pte_kind_c128_ms8_ms16_2cr_v());
62} 377}
63 378
64static bool gp10b_kind_zbc(u8 k) 379static noinline_for_stack bool gp10b_kind_zbc(u8 k)
65{ 380{
66 return (k >= gmmu_pte_kind_z16_2cz_v() && 381 return /* From gp10b */
67 k <= gmmu_pte_kind_z16_ms8_2cz_v()) || 382 (k >= gmmu_pte_kind_z16_2cz_v() &&
68 k == gmmu_pte_kind_z16_ms16_2cz_v() || 383 k <= gmmu_pte_kind_z16_ms8_2cz_v())
69 k == gmmu_pte_kind_c32_ms4_4cbra_v() || 384 || (k == gmmu_pte_kind_z16_ms16_2cz_v())
70 k == gmmu_pte_kind_c64_ms4_4cbra_v(); 385 || (k == gmmu_pte_kind_c32_ms4_4cbra_v())
386 || (k == gmmu_pte_kind_c64_ms4_4cbra_v())
387 /* From gm20b */
388 || (k >= gmmu_pte_kind_s8_v() &&
389 k <= gmmu_pte_kind_s8_2s_v())
390 /* From gk20a */
391 || (k >= gmmu_pte_kind_z16_2c_v() &&
392 k <= gmmu_pte_kind_z16_ms16_2c_v())
393 || (k >= gmmu_pte_kind_z16_4cz_v() &&
394 k <= gmmu_pte_kind_z16_ms16_4cz_v())
395 || (k >= gmmu_pte_kind_s8z24_2cz_v() &&
396 k <= gmmu_pte_kind_s8z24_ms16_4cszv_v())
397 || (k >= gmmu_pte_kind_v8z24_ms4_vc12_2cs_v() &&
398 k <= gmmu_pte_kind_v8z24_ms8_vc24_2cs_v())
399 || (k >= gmmu_pte_kind_v8z24_ms4_vc12_2czv_v() &&
400 k <= gmmu_pte_kind_v8z24_ms8_vc24_2czv_v())
401 || (k >= gmmu_pte_kind_v8z24_ms4_vc12_4cszv_v() &&
402 k <= gmmu_pte_kind_v8z24_ms8_vc24_4cszv_v())
403 || (k >= gmmu_pte_kind_z24s8_2cs_v() &&
404 k <= gmmu_pte_kind_z24s8_ms16_4cszv_v())
405 || (k >= gmmu_pte_kind_z24v8_ms4_vc12_2cs_v() &&
406 k <= gmmu_pte_kind_z24v8_ms8_vc24_2cs_v())
407 || (k >= gmmu_pte_kind_z24v8_ms4_vc12_2czv_v() &&
408 k <= gmmu_pte_kind_z24v8_ms8_vc24_2czv_v())
409 || (k >= gmmu_pte_kind_z24v8_ms4_vc12_4cszv_v() &&
410 k <= gmmu_pte_kind_z24v8_ms8_vc24_4cszv_v())
411 || (k >= gmmu_pte_kind_zf32_2cs_v() &&
412 k <= gmmu_pte_kind_zf32_ms16_2cz_v())
413 || (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_1cs_v() &&
414 k <= gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_1cs_v())
415 || (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_1czv_v() &&
416 k <= gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_2cszv_v())
417 || (k >= gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_1cs_v() &&
418 k <= gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_1cs_v())
419 || (k >= gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_1czv_v() &&
420 k <= gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_2cszv_v())
421 || (k >= gmmu_pte_kind_zf32_x24s8_1cs_v() &&
422 k <= gmmu_pte_kind_zf32_x24s8_ms16_1cs_v())
423 || (k >= gmmu_pte_kind_zf32_x24s8_2cszv_v() &&
424 k <= gmmu_pte_kind_c32_2cra_v())
425 || (k >= gmmu_pte_kind_c32_ms2_2c_v() &&
426 k <= gmmu_pte_kind_c32_ms2_2cbr_v())
427 || (k == gmmu_pte_kind_c32_ms2_2cra_v())
428 || (k >= gmmu_pte_kind_c32_ms4_2c_v() &&
429 k <= gmmu_pte_kind_c32_ms4_2cra_v())
430 || (k >= gmmu_pte_kind_c32_ms8_ms16_2c_v() &&
431 k <= gmmu_pte_kind_c64_2cra_v())
432 || (k >= gmmu_pte_kind_c64_ms2_2c_v() &&
433 k <= gmmu_pte_kind_c64_ms2_2cbr_v())
434 || (k == gmmu_pte_kind_c64_ms2_2cra_v())
435 || (k >= gmmu_pte_kind_c64_ms4_2c_v() &&
436 k <= gmmu_pte_kind_c64_ms4_2cra_v())
437 || (k >= gmmu_pte_kind_c64_ms8_ms16_2c_v() &&
438 k <= gmmu_pte_kind_c128_ms8_ms16_2cr_v());
71} 439}
72 440
73static void gp10b_init_kind_attr(void) 441static void gp10b_init_kind_attr(void)
74{ 442{
75 u16 k; 443 u16 k;
76 444
77 for (k = 0; k < 256; k++) { 445 for (k = 0; k < NV_KIND_ATTR_SIZE; k++) {
78 if (gp10b_kind_supported((u8)k)) 446 if (gp10b_kind_supported((u8)k))
79 gk20a_kind_attr[k] |= GK20A_KIND_ATTR_SUPPORTED; 447 gk20a_kind_attr[k] |= GK20A_KIND_ATTR_SUPPORTED;
80 if (gp10b_kind_compressible((u8)k)) 448 if (gp10b_kind_compressible((u8)k))
81 gk20a_kind_attr[k] |= GK20A_KIND_ATTR_COMPRESSIBLE; 449 gk20a_kind_attr[k] |= GK20A_KIND_ATTR_COMPRESSIBLE;
82 if (gp10b_kind_z((u8)k)) 450 if (gp10b_kind_z((u8)k))
83 gk20a_kind_attr[k] |= GK20A_KIND_ATTR_Z; 451 gk20a_kind_attr[k] |= GK20A_KIND_ATTR_Z;
452 if (gp10b_kind_c((u8)k))
453 gk20a_kind_attr[k] |= GK20A_KIND_ATTR_C;
84 if (gp10b_kind_zbc((u8)k)) 454 if (gp10b_kind_zbc((u8)k))
85 gk20a_kind_attr[k] |= GK20A_KIND_ATTR_ZBC; 455 gk20a_kind_attr[k] |= GK20A_KIND_ATTR_ZBC;
86 } 456 }