summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gk20a/gr_ctx_gk20a.c
diff options
context:
space:
mode:
authorAlex Waterman <alexw@nvidia.com>2017-03-08 20:08:32 -0500
committermobile promotions <svcmobile_promotions@nvidia.com>2017-03-29 14:50:21 -0400
commitbc92e2fb972e039ee33c1f1477204a4d145a8b96 (patch)
treea43df80fe921f3e4b50c70bf67aef30a0b5dd5bb /drivers/gpu/nvgpu/gk20a/gr_ctx_gk20a.c
parent4022b989aa2e91fe77ed52df49d45838f6d8b9bb (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.c129
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
31static int gr_gk20a_alloc_load_netlist_u32(u32 *src, u32 len, 32static 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
43static int gr_gk20a_alloc_load_netlist_av(u32 *src, u32 len, 44static 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
55static int gr_gk20a_alloc_load_netlist_aiv(u32 *src, u32 len, 56static 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
398clean_up: 399clean_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 }