summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gp10b
diff options
context:
space:
mode:
authorSunny He <suhe@nvidia.com>2017-08-11 17:44:06 -0400
committerShu Zhong <shuz@nvidia.com>2017-08-11 17:57:42 -0400
commit5248d6b4b5f74a5dca492d7666e80a819734f8da (patch)
tree47b7fd47d02fb39b210d9e21cd4ef36d898450b1 /drivers/gpu/nvgpu/gp10b
parent36c07aaf5da4d0e739c5143ed00d4ca8a2263ce1 (diff)
Revert "gpu: nvgpu: remove kind map inheritance"
Conflicts with gv100 changes This reverts commit 83e49b39181a86d32f6350c65659b5892f8f7670. Change-Id: Ic5720fd3c214fa306645fb628a28ecf7d6d0c26d Signed-off-by: Sunny He <suhe@nvidia.com> Reviewed-on: https://git-master.nvidia.com/r/1537673 Reviewed-by: Shu Zhong <shuz@nvidia.com> Tested-by: Shu Zhong <shuz@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/gp10b')
-rw-r--r--drivers/gpu/nvgpu/gp10b/fb_gp10b.c418
1 files changed, 24 insertions, 394 deletions
diff --git a/drivers/gpu/nvgpu/gp10b/fb_gp10b.c b/drivers/gpu/nvgpu/gp10b/fb_gp10b.c
index 8ba9ff8e..06cd94f2 100644
--- a/drivers/gpu/nvgpu/gp10b/fb_gp10b.c
+++ b/drivers/gpu/nvgpu/gp10b/fb_gp10b.c
@@ -20,14 +20,8 @@
20 20
21#include <nvgpu/hw/gp10b/hw_gmmu_gp10b.h> 21#include <nvgpu/hw/gp10b/hw_gmmu_gp10b.h>
22 22
23static noinline_for_stack void gp10b_init_uncompressed_kind_map(void) 23static 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 */
31 gk20a_uc_kind_map[gmmu_pte_kind_z16_2cz_v()] = 25 gk20a_uc_kind_map[gmmu_pte_kind_z16_2cz_v()] =
32 gk20a_uc_kind_map[gmmu_pte_kind_z16_ms2_2cz_v()] = 26 gk20a_uc_kind_map[gmmu_pte_kind_z16_ms2_2cz_v()] =
33 gk20a_uc_kind_map[gmmu_pte_kind_z16_ms4_2cz_v()] = 27 gk20a_uc_kind_map[gmmu_pte_kind_z16_ms4_2cz_v()] =
@@ -38,419 +32,55 @@ static noinline_for_stack void gp10b_init_uncompressed_kind_map(void)
38 gk20a_uc_kind_map[gmmu_pte_kind_c32_ms4_4cbra_v()] = 32 gk20a_uc_kind_map[gmmu_pte_kind_c32_ms4_4cbra_v()] =
39 gk20a_uc_kind_map[gmmu_pte_kind_c64_ms4_4cbra_v()] = 33 gk20a_uc_kind_map[gmmu_pte_kind_c64_ms4_4cbra_v()] =
40 gmmu_pte_kind_generic_16bx2_v(); 34 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();
226} 35}
227 36
228static noinline_for_stack bool gp10b_kind_supported(u8 k) 37static bool gp10b_kind_supported(u8 k)
229{ 38{
230 return /* From gp10b */ 39 return (k >= gmmu_pte_kind_z16_2cz_v() &&
231 (k >= gmmu_pte_kind_z16_2cz_v() && 40 k <= gmmu_pte_kind_z16_ms8_2cz_v())
232 k <= gmmu_pte_kind_z16_ms8_2cz_v())
233 || k == gmmu_pte_kind_z16_ms16_2cz_v() 41 || k == gmmu_pte_kind_z16_ms16_2cz_v()
234 || k == gmmu_pte_kind_c32_ms4_4cbra_v() 42 || k == gmmu_pte_kind_c32_ms4_4cbra_v()
235 || k == gmmu_pte_kind_c64_ms4_4cbra_v() 43 || 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());
312} 44}
313 45
314static noinline_for_stack bool gp10b_kind_c(u8 k) 46static bool gp10b_kind_z(u8 k)
315{ 47{
316 return gk20a_kind_work_creation(k) 48 return (k >= gmmu_pte_kind_z16_2cz_v() &&
317 || (k == gmmu_pte_kind_pitch_v()) 49 k <= gmmu_pte_kind_z16_ms8_2cz_v()) ||
318 || (k == gmmu_pte_kind_generic_16bx2_v()) 50 k == gmmu_pte_kind_z16_ms16_2cz_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());
327} 51}
328 52
329static noinline_for_stack bool gp10b_kind_compressible(u8 k) 53static bool gp10b_kind_compressible(u8 k)
330{ 54{
331 return /* From gp10b */ 55 return (k >= gmmu_pte_kind_z16_2cz_v() &&
332 (k >= gmmu_pte_kind_z16_2cz_v() && 56 k <= gmmu_pte_kind_z16_ms8_2cz_v()) ||
333 k <= gmmu_pte_kind_z16_ms8_2cz_v()) 57 k == gmmu_pte_kind_z16_ms16_2cz_v() ||
334 || (k == gmmu_pte_kind_z16_ms16_2cz_v()) 58 (k >= gmmu_pte_kind_z16_4cz_v() &&
335 || (k >= gmmu_pte_kind_z16_4cz_v() && 59 k <= gmmu_pte_kind_z16_ms16_4cz_v()) ||
336 k <= gmmu_pte_kind_z16_ms16_4cz_v()) 60 k == gmmu_pte_kind_c32_ms4_4cbra_v() ||
337 || (k == gmmu_pte_kind_c32_ms4_4cbra_v()) 61 k == gmmu_pte_kind_c64_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());
377} 62}
378 63
379static noinline_for_stack bool gp10b_kind_zbc(u8 k) 64static bool gp10b_kind_zbc(u8 k)
380{ 65{
381 return /* From gp10b */ 66 return (k >= gmmu_pte_kind_z16_2cz_v() &&
382 (k >= gmmu_pte_kind_z16_2cz_v() && 67 k <= gmmu_pte_kind_z16_ms8_2cz_v()) ||
383 k <= gmmu_pte_kind_z16_ms8_2cz_v()) 68 k == gmmu_pte_kind_z16_ms16_2cz_v() ||
384 || (k == gmmu_pte_kind_z16_ms16_2cz_v()) 69 k == gmmu_pte_kind_c32_ms4_4cbra_v() ||
385 || (k == gmmu_pte_kind_c32_ms4_4cbra_v()) 70 k == gmmu_pte_kind_c64_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());
439} 71}
440 72
441static void gp10b_init_kind_attr(void) 73static void gp10b_init_kind_attr(void)
442{ 74{
443 u16 k; 75 u16 k;
444 76
445 for (k = 0; k < NV_KIND_ATTR_SIZE; k++) { 77 for (k = 0; k < 256; k++) {
446 if (gp10b_kind_supported((u8)k)) 78 if (gp10b_kind_supported((u8)k))
447 gk20a_kind_attr[k] |= GK20A_KIND_ATTR_SUPPORTED; 79 gk20a_kind_attr[k] |= GK20A_KIND_ATTR_SUPPORTED;
448 if (gp10b_kind_compressible((u8)k)) 80 if (gp10b_kind_compressible((u8)k))
449 gk20a_kind_attr[k] |= GK20A_KIND_ATTR_COMPRESSIBLE; 81 gk20a_kind_attr[k] |= GK20A_KIND_ATTR_COMPRESSIBLE;
450 if (gp10b_kind_z((u8)k)) 82 if (gp10b_kind_z((u8)k))
451 gk20a_kind_attr[k] |= GK20A_KIND_ATTR_Z; 83 gk20a_kind_attr[k] |= GK20A_KIND_ATTR_Z;
452 if (gp10b_kind_c((u8)k))
453 gk20a_kind_attr[k] |= GK20A_KIND_ATTR_C;
454 if (gp10b_kind_zbc((u8)k)) 84 if (gp10b_kind_zbc((u8)k))
455 gk20a_kind_attr[k] |= GK20A_KIND_ATTR_ZBC; 85 gk20a_kind_attr[k] |= GK20A_KIND_ATTR_ZBC;
456 } 86 }