diff options
author | Alex Waterman <alexw@nvidia.com> | 2017-03-08 20:08:32 -0500 |
---|---|---|
committer | mobile promotions <svcmobile_promotions@nvidia.com> | 2017-03-29 14:50:21 -0400 |
commit | bc92e2fb972e039ee33c1f1477204a4d145a8b96 (patch) | |
tree | a43df80fe921f3e4b50c70bf67aef30a0b5dd5bb /drivers/gpu/nvgpu/gk20a/gr_ctx_gk20a.c | |
parent | 4022b989aa2e91fe77ed52df49d45838f6d8b9bb (diff) |
gpu: nvgpu: Use new kmem API functions (gk20a core)
Use the new kmem API functions in core gk20a code. Also add a struct
gk20a pointer to several functions to ensure that the kmem APIs can be
used.
Bug 1799159
Bug 1823380
Change-Id: I41276509c4f0b68e80b989aa55cf94d8dbbdf156
Signed-off-by: Alex Waterman <alexw@nvidia.com>
Reviewed-on: http://git-master/r/1318322
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a/gr_ctx_gk20a.c')
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/gr_ctx_gk20a.c | 129 |
1 files changed, 65 insertions, 64 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/gr_ctx_gk20a.c b/drivers/gpu/nvgpu/gk20a/gr_ctx_gk20a.c index 7342cb1d..96185ee7 100644 --- a/drivers/gpu/nvgpu/gk20a/gr_ctx_gk20a.c +++ b/drivers/gpu/nvgpu/gk20a/gr_ctx_gk20a.c | |||
@@ -22,17 +22,18 @@ | |||
22 | #include <linux/firmware.h> | 22 | #include <linux/firmware.h> |
23 | 23 | ||
24 | #include <nvgpu/nvgpu_common.h> | 24 | #include <nvgpu/nvgpu_common.h> |
25 | #include <nvgpu/kmem.h> | ||
25 | 26 | ||
26 | #include "gk20a.h" | 27 | #include "gk20a.h" |
27 | #include "gr_ctx_gk20a.h" | 28 | #include "gr_ctx_gk20a.h" |
28 | 29 | ||
29 | #include <nvgpu/hw/gk20a/hw_gr_gk20a.h> | 30 | #include <nvgpu/hw/gk20a/hw_gr_gk20a.h> |
30 | 31 | ||
31 | static int gr_gk20a_alloc_load_netlist_u32(u32 *src, u32 len, | 32 | static int gr_gk20a_alloc_load_netlist_u32(struct gk20a *g, u32 *src, u32 len, |
32 | struct u32_list_gk20a *u32_list) | 33 | struct u32_list_gk20a *u32_list) |
33 | { | 34 | { |
34 | u32_list->count = (len + sizeof(u32) - 1) / sizeof(u32); | 35 | u32_list->count = (len + sizeof(u32) - 1) / sizeof(u32); |
35 | if (!alloc_u32_list_gk20a(u32_list)) | 36 | if (!alloc_u32_list_gk20a(g, u32_list)) |
36 | return -ENOMEM; | 37 | return -ENOMEM; |
37 | 38 | ||
38 | memcpy(u32_list->l, src, len); | 39 | memcpy(u32_list->l, src, len); |
@@ -40,11 +41,11 @@ static int gr_gk20a_alloc_load_netlist_u32(u32 *src, u32 len, | |||
40 | return 0; | 41 | return 0; |
41 | } | 42 | } |
42 | 43 | ||
43 | static int gr_gk20a_alloc_load_netlist_av(u32 *src, u32 len, | 44 | static int gr_gk20a_alloc_load_netlist_av(struct gk20a *g, u32 *src, u32 len, |
44 | struct av_list_gk20a *av_list) | 45 | struct av_list_gk20a *av_list) |
45 | { | 46 | { |
46 | av_list->count = len / sizeof(struct av_gk20a); | 47 | av_list->count = len / sizeof(struct av_gk20a); |
47 | if (!alloc_av_list_gk20a(av_list)) | 48 | if (!alloc_av_list_gk20a(g, av_list)) |
48 | return -ENOMEM; | 49 | return -ENOMEM; |
49 | 50 | ||
50 | memcpy(av_list->l, src, len); | 51 | memcpy(av_list->l, src, len); |
@@ -52,11 +53,11 @@ static int gr_gk20a_alloc_load_netlist_av(u32 *src, u32 len, | |||
52 | return 0; | 53 | return 0; |
53 | } | 54 | } |
54 | 55 | ||
55 | static int gr_gk20a_alloc_load_netlist_aiv(u32 *src, u32 len, | 56 | static int gr_gk20a_alloc_load_netlist_aiv(struct gk20a *g, u32 *src, u32 len, |
56 | struct aiv_list_gk20a *aiv_list) | 57 | struct aiv_list_gk20a *aiv_list) |
57 | { | 58 | { |
58 | aiv_list->count = len / sizeof(struct aiv_gk20a); | 59 | aiv_list->count = len / sizeof(struct aiv_gk20a); |
59 | if (!alloc_aiv_list_gk20a(aiv_list)) | 60 | if (!alloc_aiv_list_gk20a(g, aiv_list)) |
60 | return -ENOMEM; | 61 | return -ENOMEM; |
61 | 62 | ||
62 | memcpy(aiv_list->l, src, len); | 63 | memcpy(aiv_list->l, src, len); |
@@ -153,56 +154,56 @@ static int gr_gk20a_init_ctx_vars_fw(struct gk20a *g, struct gr_gk20a *gr) | |||
153 | switch (netlist->regions[i].region_id) { | 154 | switch (netlist->regions[i].region_id) { |
154 | case NETLIST_REGIONID_FECS_UCODE_DATA: | 155 | case NETLIST_REGIONID_FECS_UCODE_DATA: |
155 | gk20a_dbg_info("NETLIST_REGIONID_FECS_UCODE_DATA"); | 156 | gk20a_dbg_info("NETLIST_REGIONID_FECS_UCODE_DATA"); |
156 | err = gr_gk20a_alloc_load_netlist_u32( | 157 | err = gr_gk20a_alloc_load_netlist_u32(g, |
157 | src, size, &g->gr.ctx_vars.ucode.fecs.data); | 158 | src, size, &g->gr.ctx_vars.ucode.fecs.data); |
158 | if (err) | 159 | if (err) |
159 | goto clean_up; | 160 | goto clean_up; |
160 | break; | 161 | break; |
161 | case NETLIST_REGIONID_FECS_UCODE_INST: | 162 | case NETLIST_REGIONID_FECS_UCODE_INST: |
162 | gk20a_dbg_info("NETLIST_REGIONID_FECS_UCODE_INST"); | 163 | gk20a_dbg_info("NETLIST_REGIONID_FECS_UCODE_INST"); |
163 | err = gr_gk20a_alloc_load_netlist_u32( | 164 | err = gr_gk20a_alloc_load_netlist_u32(g, |
164 | src, size, &g->gr.ctx_vars.ucode.fecs.inst); | 165 | src, size, &g->gr.ctx_vars.ucode.fecs.inst); |
165 | if (err) | 166 | if (err) |
166 | goto clean_up; | 167 | goto clean_up; |
167 | break; | 168 | break; |
168 | case NETLIST_REGIONID_GPCCS_UCODE_DATA: | 169 | case NETLIST_REGIONID_GPCCS_UCODE_DATA: |
169 | gk20a_dbg_info("NETLIST_REGIONID_GPCCS_UCODE_DATA"); | 170 | gk20a_dbg_info("NETLIST_REGIONID_GPCCS_UCODE_DATA"); |
170 | err = gr_gk20a_alloc_load_netlist_u32( | 171 | err = gr_gk20a_alloc_load_netlist_u32(g, |
171 | src, size, &g->gr.ctx_vars.ucode.gpccs.data); | 172 | src, size, &g->gr.ctx_vars.ucode.gpccs.data); |
172 | if (err) | 173 | if (err) |
173 | goto clean_up; | 174 | goto clean_up; |
174 | break; | 175 | break; |
175 | case NETLIST_REGIONID_GPCCS_UCODE_INST: | 176 | case NETLIST_REGIONID_GPCCS_UCODE_INST: |
176 | gk20a_dbg_info("NETLIST_REGIONID_GPCCS_UCODE_INST"); | 177 | gk20a_dbg_info("NETLIST_REGIONID_GPCCS_UCODE_INST"); |
177 | err = gr_gk20a_alloc_load_netlist_u32( | 178 | err = gr_gk20a_alloc_load_netlist_u32(g, |
178 | src, size, &g->gr.ctx_vars.ucode.gpccs.inst); | 179 | src, size, &g->gr.ctx_vars.ucode.gpccs.inst); |
179 | if (err) | 180 | if (err) |
180 | goto clean_up; | 181 | goto clean_up; |
181 | break; | 182 | break; |
182 | case NETLIST_REGIONID_SW_BUNDLE_INIT: | 183 | case NETLIST_REGIONID_SW_BUNDLE_INIT: |
183 | gk20a_dbg_info("NETLIST_REGIONID_SW_BUNDLE_INIT"); | 184 | gk20a_dbg_info("NETLIST_REGIONID_SW_BUNDLE_INIT"); |
184 | err = gr_gk20a_alloc_load_netlist_av( | 185 | err = gr_gk20a_alloc_load_netlist_av(g, |
185 | src, size, &g->gr.ctx_vars.sw_bundle_init); | 186 | src, size, &g->gr.ctx_vars.sw_bundle_init); |
186 | if (err) | 187 | if (err) |
187 | goto clean_up; | 188 | goto clean_up; |
188 | break; | 189 | break; |
189 | case NETLIST_REGIONID_SW_METHOD_INIT: | 190 | case NETLIST_REGIONID_SW_METHOD_INIT: |
190 | gk20a_dbg_info("NETLIST_REGIONID_SW_METHOD_INIT"); | 191 | gk20a_dbg_info("NETLIST_REGIONID_SW_METHOD_INIT"); |
191 | err = gr_gk20a_alloc_load_netlist_av( | 192 | err = gr_gk20a_alloc_load_netlist_av(g, |
192 | src, size, &g->gr.ctx_vars.sw_method_init); | 193 | src, size, &g->gr.ctx_vars.sw_method_init); |
193 | if (err) | 194 | if (err) |
194 | goto clean_up; | 195 | goto clean_up; |
195 | break; | 196 | break; |
196 | case NETLIST_REGIONID_SW_CTX_LOAD: | 197 | case NETLIST_REGIONID_SW_CTX_LOAD: |
197 | gk20a_dbg_info("NETLIST_REGIONID_SW_CTX_LOAD"); | 198 | gk20a_dbg_info("NETLIST_REGIONID_SW_CTX_LOAD"); |
198 | err = gr_gk20a_alloc_load_netlist_aiv( | 199 | err = gr_gk20a_alloc_load_netlist_aiv(g, |
199 | src, size, &g->gr.ctx_vars.sw_ctx_load); | 200 | src, size, &g->gr.ctx_vars.sw_ctx_load); |
200 | if (err) | 201 | if (err) |
201 | goto clean_up; | 202 | goto clean_up; |
202 | break; | 203 | break; |
203 | case NETLIST_REGIONID_SW_NON_CTX_LOAD: | 204 | case NETLIST_REGIONID_SW_NON_CTX_LOAD: |
204 | gk20a_dbg_info("NETLIST_REGIONID_SW_NON_CTX_LOAD"); | 205 | gk20a_dbg_info("NETLIST_REGIONID_SW_NON_CTX_LOAD"); |
205 | err = gr_gk20a_alloc_load_netlist_av( | 206 | err = gr_gk20a_alloc_load_netlist_av(g, |
206 | src, size, &g->gr.ctx_vars.sw_non_ctx_load); | 207 | src, size, &g->gr.ctx_vars.sw_non_ctx_load); |
207 | if (err) | 208 | if (err) |
208 | goto clean_up; | 209 | goto clean_up; |
@@ -210,7 +211,7 @@ static int gr_gk20a_init_ctx_vars_fw(struct gk20a *g, struct gr_gk20a *gr) | |||
210 | case NETLIST_REGIONID_SWVEIDBUNDLEINIT: | 211 | case NETLIST_REGIONID_SWVEIDBUNDLEINIT: |
211 | gk20a_dbg_info( | 212 | gk20a_dbg_info( |
212 | "NETLIST_REGIONID_SW_VEID_BUNDLE_INIT"); | 213 | "NETLIST_REGIONID_SW_VEID_BUNDLE_INIT"); |
213 | err = gr_gk20a_alloc_load_netlist_av( | 214 | err = gr_gk20a_alloc_load_netlist_av(g, |
214 | src, size, | 215 | src, size, |
215 | &g->gr.ctx_vars.sw_veid_bundle_init); | 216 | &g->gr.ctx_vars.sw_veid_bundle_init); |
216 | if (err) | 217 | if (err) |
@@ -218,56 +219,56 @@ static int gr_gk20a_init_ctx_vars_fw(struct gk20a *g, struct gr_gk20a *gr) | |||
218 | break; | 219 | break; |
219 | case NETLIST_REGIONID_CTXREG_SYS: | 220 | case NETLIST_REGIONID_CTXREG_SYS: |
220 | gk20a_dbg_info("NETLIST_REGIONID_CTXREG_SYS"); | 221 | gk20a_dbg_info("NETLIST_REGIONID_CTXREG_SYS"); |
221 | err = gr_gk20a_alloc_load_netlist_aiv( | 222 | err = gr_gk20a_alloc_load_netlist_aiv(g, |
222 | src, size, &g->gr.ctx_vars.ctxsw_regs.sys); | 223 | src, size, &g->gr.ctx_vars.ctxsw_regs.sys); |
223 | if (err) | 224 | if (err) |
224 | goto clean_up; | 225 | goto clean_up; |
225 | break; | 226 | break; |
226 | case NETLIST_REGIONID_CTXREG_GPC: | 227 | case NETLIST_REGIONID_CTXREG_GPC: |
227 | gk20a_dbg_info("NETLIST_REGIONID_CTXREG_GPC"); | 228 | gk20a_dbg_info("NETLIST_REGIONID_CTXREG_GPC"); |
228 | err = gr_gk20a_alloc_load_netlist_aiv( | 229 | err = gr_gk20a_alloc_load_netlist_aiv(g, |
229 | src, size, &g->gr.ctx_vars.ctxsw_regs.gpc); | 230 | src, size, &g->gr.ctx_vars.ctxsw_regs.gpc); |
230 | if (err) | 231 | if (err) |
231 | goto clean_up; | 232 | goto clean_up; |
232 | break; | 233 | break; |
233 | case NETLIST_REGIONID_CTXREG_TPC: | 234 | case NETLIST_REGIONID_CTXREG_TPC: |
234 | gk20a_dbg_info("NETLIST_REGIONID_CTXREG_TPC"); | 235 | gk20a_dbg_info("NETLIST_REGIONID_CTXREG_TPC"); |
235 | err = gr_gk20a_alloc_load_netlist_aiv( | 236 | err = gr_gk20a_alloc_load_netlist_aiv(g, |
236 | src, size, &g->gr.ctx_vars.ctxsw_regs.tpc); | 237 | src, size, &g->gr.ctx_vars.ctxsw_regs.tpc); |
237 | if (err) | 238 | if (err) |
238 | goto clean_up; | 239 | goto clean_up; |
239 | break; | 240 | break; |
240 | case NETLIST_REGIONID_CTXREG_ZCULL_GPC: | 241 | case NETLIST_REGIONID_CTXREG_ZCULL_GPC: |
241 | gk20a_dbg_info("NETLIST_REGIONID_CTXREG_ZCULL_GPC"); | 242 | gk20a_dbg_info("NETLIST_REGIONID_CTXREG_ZCULL_GPC"); |
242 | err = gr_gk20a_alloc_load_netlist_aiv( | 243 | err = gr_gk20a_alloc_load_netlist_aiv(g, |
243 | src, size, &g->gr.ctx_vars.ctxsw_regs.zcull_gpc); | 244 | src, size, &g->gr.ctx_vars.ctxsw_regs.zcull_gpc); |
244 | if (err) | 245 | if (err) |
245 | goto clean_up; | 246 | goto clean_up; |
246 | break; | 247 | break; |
247 | case NETLIST_REGIONID_CTXREG_PPC: | 248 | case NETLIST_REGIONID_CTXREG_PPC: |
248 | gk20a_dbg_info("NETLIST_REGIONID_CTXREG_PPC"); | 249 | gk20a_dbg_info("NETLIST_REGIONID_CTXREG_PPC"); |
249 | err = gr_gk20a_alloc_load_netlist_aiv( | 250 | err = gr_gk20a_alloc_load_netlist_aiv(g, |
250 | src, size, &g->gr.ctx_vars.ctxsw_regs.ppc); | 251 | src, size, &g->gr.ctx_vars.ctxsw_regs.ppc); |
251 | if (err) | 252 | if (err) |
252 | goto clean_up; | 253 | goto clean_up; |
253 | break; | 254 | break; |
254 | case NETLIST_REGIONID_CTXREG_PM_SYS: | 255 | case NETLIST_REGIONID_CTXREG_PM_SYS: |
255 | gk20a_dbg_info("NETLIST_REGIONID_CTXREG_PM_SYS"); | 256 | gk20a_dbg_info("NETLIST_REGIONID_CTXREG_PM_SYS"); |
256 | err = gr_gk20a_alloc_load_netlist_aiv( | 257 | err = gr_gk20a_alloc_load_netlist_aiv(g, |
257 | src, size, &g->gr.ctx_vars.ctxsw_regs.pm_sys); | 258 | src, size, &g->gr.ctx_vars.ctxsw_regs.pm_sys); |
258 | if (err) | 259 | if (err) |
259 | goto clean_up; | 260 | goto clean_up; |
260 | break; | 261 | break; |
261 | case NETLIST_REGIONID_CTXREG_PM_GPC: | 262 | case NETLIST_REGIONID_CTXREG_PM_GPC: |
262 | gk20a_dbg_info("NETLIST_REGIONID_CTXREG_PM_GPC"); | 263 | gk20a_dbg_info("NETLIST_REGIONID_CTXREG_PM_GPC"); |
263 | err = gr_gk20a_alloc_load_netlist_aiv( | 264 | err = gr_gk20a_alloc_load_netlist_aiv(g, |
264 | src, size, &g->gr.ctx_vars.ctxsw_regs.pm_gpc); | 265 | src, size, &g->gr.ctx_vars.ctxsw_regs.pm_gpc); |
265 | if (err) | 266 | if (err) |
266 | goto clean_up; | 267 | goto clean_up; |
267 | break; | 268 | break; |
268 | case NETLIST_REGIONID_CTXREG_PM_TPC: | 269 | case NETLIST_REGIONID_CTXREG_PM_TPC: |
269 | gk20a_dbg_info("NETLIST_REGIONID_CTXREG_PM_TPC"); | 270 | gk20a_dbg_info("NETLIST_REGIONID_CTXREG_PM_TPC"); |
270 | err = gr_gk20a_alloc_load_netlist_aiv( | 271 | err = gr_gk20a_alloc_load_netlist_aiv(g, |
271 | src, size, &g->gr.ctx_vars.ctxsw_regs.pm_tpc); | 272 | src, size, &g->gr.ctx_vars.ctxsw_regs.pm_tpc); |
272 | if (err) | 273 | if (err) |
273 | goto clean_up; | 274 | goto clean_up; |
@@ -294,84 +295,84 @@ static int gr_gk20a_init_ctx_vars_fw(struct gk20a *g, struct gr_gk20a *gr) | |||
294 | break; | 295 | break; |
295 | case NETLIST_REGIONID_CTXREG_PMPPC: | 296 | case NETLIST_REGIONID_CTXREG_PMPPC: |
296 | gk20a_dbg_info("NETLIST_REGIONID_CTXREG_PMPPC"); | 297 | gk20a_dbg_info("NETLIST_REGIONID_CTXREG_PMPPC"); |
297 | err = gr_gk20a_alloc_load_netlist_aiv( | 298 | err = gr_gk20a_alloc_load_netlist_aiv(g, |
298 | src, size, &g->gr.ctx_vars.ctxsw_regs.pm_ppc); | 299 | src, size, &g->gr.ctx_vars.ctxsw_regs.pm_ppc); |
299 | if (err) | 300 | if (err) |
300 | goto clean_up; | 301 | goto clean_up; |
301 | break; | 302 | break; |
302 | case NETLIST_REGIONID_NVPERF_CTXREG_SYS: | 303 | case NETLIST_REGIONID_NVPERF_CTXREG_SYS: |
303 | gk20a_dbg_info("NETLIST_REGIONID_NVPERF_CTXREG_SYS"); | 304 | gk20a_dbg_info("NETLIST_REGIONID_NVPERF_CTXREG_SYS"); |
304 | err = gr_gk20a_alloc_load_netlist_aiv( | 305 | err = gr_gk20a_alloc_load_netlist_aiv(g, |
305 | src, size, &g->gr.ctx_vars.ctxsw_regs.perf_sys); | 306 | src, size, &g->gr.ctx_vars.ctxsw_regs.perf_sys); |
306 | if (err) | 307 | if (err) |
307 | goto clean_up; | 308 | goto clean_up; |
308 | break; | 309 | break; |
309 | case NETLIST_REGIONID_NVPERF_FBP_CTXREGS: | 310 | case NETLIST_REGIONID_NVPERF_FBP_CTXREGS: |
310 | gk20a_dbg_info("NETLIST_REGIONID_NVPERF_FBP_CTXREGS"); | 311 | gk20a_dbg_info("NETLIST_REGIONID_NVPERF_FBP_CTXREGS"); |
311 | err = gr_gk20a_alloc_load_netlist_aiv( | 312 | err = gr_gk20a_alloc_load_netlist_aiv(g, |
312 | src, size, &g->gr.ctx_vars.ctxsw_regs.fbp); | 313 | src, size, &g->gr.ctx_vars.ctxsw_regs.fbp); |
313 | if (err) | 314 | if (err) |
314 | goto clean_up; | 315 | goto clean_up; |
315 | break; | 316 | break; |
316 | case NETLIST_REGIONID_NVPERF_CTXREG_GPC: | 317 | case NETLIST_REGIONID_NVPERF_CTXREG_GPC: |
317 | gk20a_dbg_info("NETLIST_REGIONID_NVPERF_CTXREG_GPC"); | 318 | gk20a_dbg_info("NETLIST_REGIONID_NVPERF_CTXREG_GPC"); |
318 | err = gr_gk20a_alloc_load_netlist_aiv( | 319 | err = gr_gk20a_alloc_load_netlist_aiv(g, |
319 | src, size, &g->gr.ctx_vars.ctxsw_regs.perf_gpc); | 320 | src, size, &g->gr.ctx_vars.ctxsw_regs.perf_gpc); |
320 | if (err) | 321 | if (err) |
321 | goto clean_up; | 322 | goto clean_up; |
322 | break; | 323 | break; |
323 | case NETLIST_REGIONID_NVPERF_FBP_ROUTER: | 324 | case NETLIST_REGIONID_NVPERF_FBP_ROUTER: |
324 | gk20a_dbg_info("NETLIST_REGIONID_NVPERF_FBP_ROUTER"); | 325 | gk20a_dbg_info("NETLIST_REGIONID_NVPERF_FBP_ROUTER"); |
325 | err = gr_gk20a_alloc_load_netlist_aiv( | 326 | err = gr_gk20a_alloc_load_netlist_aiv(g, |
326 | src, size, &g->gr.ctx_vars.ctxsw_regs.fbp_router); | 327 | src, size, &g->gr.ctx_vars.ctxsw_regs.fbp_router); |
327 | if (err) | 328 | if (err) |
328 | goto clean_up; | 329 | goto clean_up; |
329 | break; | 330 | break; |
330 | case NETLIST_REGIONID_NVPERF_GPC_ROUTER: | 331 | case NETLIST_REGIONID_NVPERF_GPC_ROUTER: |
331 | gk20a_dbg_info("NETLIST_REGIONID_NVPERF_GPC_ROUTER"); | 332 | gk20a_dbg_info("NETLIST_REGIONID_NVPERF_GPC_ROUTER"); |
332 | err = gr_gk20a_alloc_load_netlist_aiv( | 333 | err = gr_gk20a_alloc_load_netlist_aiv(g, |
333 | src, size, &g->gr.ctx_vars.ctxsw_regs.gpc_router); | 334 | src, size, &g->gr.ctx_vars.ctxsw_regs.gpc_router); |
334 | if (err) | 335 | if (err) |
335 | goto clean_up; | 336 | goto clean_up; |
336 | break; | 337 | break; |
337 | case NETLIST_REGIONID_CTXREG_PMLTC: | 338 | case NETLIST_REGIONID_CTXREG_PMLTC: |
338 | gk20a_dbg_info("NETLIST_REGIONID_CTXREG_PMLTC"); | 339 | gk20a_dbg_info("NETLIST_REGIONID_CTXREG_PMLTC"); |
339 | err = gr_gk20a_alloc_load_netlist_aiv( | 340 | err = gr_gk20a_alloc_load_netlist_aiv(g, |
340 | src, size, &g->gr.ctx_vars.ctxsw_regs.pm_ltc); | 341 | src, size, &g->gr.ctx_vars.ctxsw_regs.pm_ltc); |
341 | if (err) | 342 | if (err) |
342 | goto clean_up; | 343 | goto clean_up; |
343 | break; | 344 | break; |
344 | case NETLIST_REGIONID_CTXREG_PMFBPA: | 345 | case NETLIST_REGIONID_CTXREG_PMFBPA: |
345 | gk20a_dbg_info("NETLIST_REGIONID_CTXREG_PMFBPA"); | 346 | gk20a_dbg_info("NETLIST_REGIONID_CTXREG_PMFBPA"); |
346 | err = gr_gk20a_alloc_load_netlist_aiv( | 347 | err = gr_gk20a_alloc_load_netlist_aiv(g, |
347 | src, size, &g->gr.ctx_vars.ctxsw_regs.pm_fbpa); | 348 | src, size, &g->gr.ctx_vars.ctxsw_regs.pm_fbpa); |
348 | if (err) | 349 | if (err) |
349 | goto clean_up; | 350 | goto clean_up; |
350 | break; | 351 | break; |
351 | case NETLIST_REGIONID_NVPERF_SYS_ROUTER: | 352 | case NETLIST_REGIONID_NVPERF_SYS_ROUTER: |
352 | gk20a_dbg_info("NETLIST_REGIONID_NVPERF_SYS_ROUTER"); | 353 | gk20a_dbg_info("NETLIST_REGIONID_NVPERF_SYS_ROUTER"); |
353 | err = gr_gk20a_alloc_load_netlist_aiv( | 354 | err = gr_gk20a_alloc_load_netlist_aiv(g, |
354 | src, size, &g->gr.ctx_vars.ctxsw_regs.perf_sys_router); | 355 | src, size, &g->gr.ctx_vars.ctxsw_regs.perf_sys_router); |
355 | if (err) | 356 | if (err) |
356 | goto clean_up; | 357 | goto clean_up; |
357 | break; | 358 | break; |
358 | case NETLIST_REGIONID_NVPERF_PMA: | 359 | case NETLIST_REGIONID_NVPERF_PMA: |
359 | gk20a_dbg_info("NETLIST_REGIONID_NVPERF_PMA"); | 360 | gk20a_dbg_info("NETLIST_REGIONID_NVPERF_PMA"); |
360 | err = gr_gk20a_alloc_load_netlist_aiv( | 361 | err = gr_gk20a_alloc_load_netlist_aiv(g, |
361 | src, size, &g->gr.ctx_vars.ctxsw_regs.perf_pma); | 362 | src, size, &g->gr.ctx_vars.ctxsw_regs.perf_pma); |
362 | if (err) | 363 | if (err) |
363 | goto clean_up; | 364 | goto clean_up; |
364 | break; | 365 | break; |
365 | case NETLIST_REGIONID_CTXREG_PMROP: | 366 | case NETLIST_REGIONID_CTXREG_PMROP: |
366 | gk20a_dbg_info("NETLIST_REGIONID_CTXREG_PMROP"); | 367 | gk20a_dbg_info("NETLIST_REGIONID_CTXREG_PMROP"); |
367 | err = gr_gk20a_alloc_load_netlist_aiv( | 368 | err = gr_gk20a_alloc_load_netlist_aiv(g, |
368 | src, size, &g->gr.ctx_vars.ctxsw_regs.pm_rop); | 369 | src, size, &g->gr.ctx_vars.ctxsw_regs.pm_rop); |
369 | if (err) | 370 | if (err) |
370 | goto clean_up; | 371 | goto clean_up; |
371 | break; | 372 | break; |
372 | case NETLIST_REGIONID_CTXREG_PMUCGPC: | 373 | case NETLIST_REGIONID_CTXREG_PMUCGPC: |
373 | gk20a_dbg_info("NETLIST_REGIONID_CTXREG_PMUCGPC"); | 374 | gk20a_dbg_info("NETLIST_REGIONID_CTXREG_PMUCGPC"); |
374 | err = gr_gk20a_alloc_load_netlist_aiv( | 375 | err = gr_gk20a_alloc_load_netlist_aiv(g, |
375 | src, size, &g->gr.ctx_vars.ctxsw_regs.pm_ucgpc); | 376 | src, size, &g->gr.ctx_vars.ctxsw_regs.pm_ucgpc); |
376 | if (err) | 377 | if (err) |
377 | goto clean_up; | 378 | goto clean_up; |
@@ -397,35 +398,35 @@ static int gr_gk20a_init_ctx_vars_fw(struct gk20a *g, struct gr_gk20a *gr) | |||
397 | 398 | ||
398 | clean_up: | 399 | clean_up: |
399 | g->gr.ctx_vars.valid = false; | 400 | g->gr.ctx_vars.valid = false; |
400 | kfree(g->gr.ctx_vars.ucode.fecs.inst.l); | 401 | nvgpu_kfree(g, g->gr.ctx_vars.ucode.fecs.inst.l); |
401 | kfree(g->gr.ctx_vars.ucode.fecs.data.l); | 402 | nvgpu_kfree(g, g->gr.ctx_vars.ucode.fecs.data.l); |
402 | kfree(g->gr.ctx_vars.ucode.gpccs.inst.l); | 403 | nvgpu_kfree(g, g->gr.ctx_vars.ucode.gpccs.inst.l); |
403 | kfree(g->gr.ctx_vars.ucode.gpccs.data.l); | 404 | nvgpu_kfree(g, g->gr.ctx_vars.ucode.gpccs.data.l); |
404 | kfree(g->gr.ctx_vars.sw_bundle_init.l); | 405 | nvgpu_kfree(g, g->gr.ctx_vars.sw_bundle_init.l); |
405 | kfree(g->gr.ctx_vars.sw_method_init.l); | 406 | nvgpu_kfree(g, g->gr.ctx_vars.sw_method_init.l); |
406 | kfree(g->gr.ctx_vars.sw_ctx_load.l); | 407 | nvgpu_kfree(g, g->gr.ctx_vars.sw_ctx_load.l); |
407 | kfree(g->gr.ctx_vars.sw_non_ctx_load.l); | 408 | nvgpu_kfree(g, g->gr.ctx_vars.sw_non_ctx_load.l); |
408 | kfree(g->gr.ctx_vars.sw_veid_bundle_init.l); | 409 | nvgpu_kfree(g, g->gr.ctx_vars.sw_veid_bundle_init.l); |
409 | kfree(g->gr.ctx_vars.ctxsw_regs.sys.l); | 410 | nvgpu_kfree(g, g->gr.ctx_vars.ctxsw_regs.sys.l); |
410 | kfree(g->gr.ctx_vars.ctxsw_regs.gpc.l); | 411 | nvgpu_kfree(g, g->gr.ctx_vars.ctxsw_regs.gpc.l); |
411 | kfree(g->gr.ctx_vars.ctxsw_regs.tpc.l); | 412 | nvgpu_kfree(g, g->gr.ctx_vars.ctxsw_regs.tpc.l); |
412 | kfree(g->gr.ctx_vars.ctxsw_regs.zcull_gpc.l); | 413 | nvgpu_kfree(g, g->gr.ctx_vars.ctxsw_regs.zcull_gpc.l); |
413 | kfree(g->gr.ctx_vars.ctxsw_regs.ppc.l); | 414 | nvgpu_kfree(g, g->gr.ctx_vars.ctxsw_regs.ppc.l); |
414 | kfree(g->gr.ctx_vars.ctxsw_regs.pm_sys.l); | 415 | nvgpu_kfree(g, g->gr.ctx_vars.ctxsw_regs.pm_sys.l); |
415 | kfree(g->gr.ctx_vars.ctxsw_regs.pm_gpc.l); | 416 | nvgpu_kfree(g, g->gr.ctx_vars.ctxsw_regs.pm_gpc.l); |
416 | kfree(g->gr.ctx_vars.ctxsw_regs.pm_tpc.l); | 417 | nvgpu_kfree(g, g->gr.ctx_vars.ctxsw_regs.pm_tpc.l); |
417 | kfree(g->gr.ctx_vars.ctxsw_regs.pm_ppc.l); | 418 | nvgpu_kfree(g, g->gr.ctx_vars.ctxsw_regs.pm_ppc.l); |
418 | kfree(g->gr.ctx_vars.ctxsw_regs.perf_sys.l); | 419 | nvgpu_kfree(g, g->gr.ctx_vars.ctxsw_regs.perf_sys.l); |
419 | kfree(g->gr.ctx_vars.ctxsw_regs.fbp.l); | 420 | nvgpu_kfree(g, g->gr.ctx_vars.ctxsw_regs.fbp.l); |
420 | kfree(g->gr.ctx_vars.ctxsw_regs.perf_gpc.l); | 421 | nvgpu_kfree(g, g->gr.ctx_vars.ctxsw_regs.perf_gpc.l); |
421 | kfree(g->gr.ctx_vars.ctxsw_regs.fbp_router.l); | 422 | nvgpu_kfree(g, g->gr.ctx_vars.ctxsw_regs.fbp_router.l); |
422 | kfree(g->gr.ctx_vars.ctxsw_regs.gpc_router.l); | 423 | nvgpu_kfree(g, g->gr.ctx_vars.ctxsw_regs.gpc_router.l); |
423 | kfree(g->gr.ctx_vars.ctxsw_regs.pm_ltc.l); | 424 | nvgpu_kfree(g, g->gr.ctx_vars.ctxsw_regs.pm_ltc.l); |
424 | kfree(g->gr.ctx_vars.ctxsw_regs.pm_fbpa.l); | 425 | nvgpu_kfree(g, g->gr.ctx_vars.ctxsw_regs.pm_fbpa.l); |
425 | kfree(g->gr.ctx_vars.ctxsw_regs.perf_sys_router.l); | 426 | nvgpu_kfree(g, g->gr.ctx_vars.ctxsw_regs.perf_sys_router.l); |
426 | kfree(g->gr.ctx_vars.ctxsw_regs.perf_pma.l); | 427 | nvgpu_kfree(g, g->gr.ctx_vars.ctxsw_regs.perf_pma.l); |
427 | kfree(g->gr.ctx_vars.ctxsw_regs.pm_rop.l); | 428 | nvgpu_kfree(g, g->gr.ctx_vars.ctxsw_regs.pm_rop.l); |
428 | kfree(g->gr.ctx_vars.ctxsw_regs.pm_ucgpc.l); | 429 | nvgpu_kfree(g, g->gr.ctx_vars.ctxsw_regs.pm_ucgpc.l); |
429 | release_firmware(netlist_fw); | 430 | release_firmware(netlist_fw); |
430 | err = -ENOENT; | 431 | err = -ENOENT; |
431 | } | 432 | } |