summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/common/sim.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/nvgpu/common/sim.c')
-rw-r--r--drivers/gpu/nvgpu/common/sim.c35
1 files changed, 23 insertions, 12 deletions
diff --git a/drivers/gpu/nvgpu/common/sim.c b/drivers/gpu/nvgpu/common/sim.c
index 6094d063..81146cd9 100644
--- a/drivers/gpu/nvgpu/common/sim.c
+++ b/drivers/gpu/nvgpu/common/sim.c
@@ -33,8 +33,7 @@ int nvgpu_alloc_sim_buffer(struct gk20a *g, struct nvgpu_mem *mem)
33{ 33{
34 int err; 34 int err;
35 35
36 err = nvgpu_dma_alloc(g, PAGE_SIZE, mem); 36 err = nvgpu_dma_alloc_sys(g, PAGE_SIZE, mem);
37
38 if (err) 37 if (err)
39 return err; 38 return err;
40 /* 39 /*
@@ -251,21 +250,14 @@ static int nvgpu_sim_esc_readl(struct gk20a *g,
251 return err; 250 return err;
252} 251}
253 252
254int nvgpu_init_sim_support(struct gk20a *g) 253static void nvgpu_sim_init_late(struct gk20a *g)
255{ 254{
256 int err = -ENOMEM;
257 u64 phys; 255 u64 phys;
258 256
259 if (!g->sim) 257 if (!g->sim)
260 return 0; 258 return;
261
262 /* allocate sim event/msg buffers */
263 err = nvgpu_alloc_sim_buffer(g, &g->sim->send_bfr);
264 err = err || nvgpu_alloc_sim_buffer(g, &g->sim->recv_bfr);
265 err = err || nvgpu_alloc_sim_buffer(g, &g->sim->msg_bfr);
266 259
267 if (err) 260 nvgpu_info(g, "sim init late");
268 goto fail;
269 /*mark send ring invalid*/ 261 /*mark send ring invalid*/
270 sim_writel(g->sim, sim_send_ring_r(), sim_send_ring_status_invalid_f()); 262 sim_writel(g->sim, sim_send_ring_r(), sim_send_ring_status_invalid_f());
271 263
@@ -300,6 +292,25 @@ int nvgpu_init_sim_support(struct gk20a *g)
300 sim_recv_ring_size_4kb_f() | 292 sim_recv_ring_size_4kb_f() |
301 sim_recv_ring_addr_lo_f(phys >> PAGE_SHIFT)); 293 sim_recv_ring_addr_lo_f(phys >> PAGE_SHIFT));
302 294
295 return;
296}
297
298int nvgpu_init_sim_support(struct gk20a *g)
299{
300 int err = -ENOMEM;
301
302 if (!g->sim)
303 return 0;
304
305 /* allocate sim event/msg buffers */
306 err = nvgpu_alloc_sim_buffer(g, &g->sim->send_bfr);
307 err = err || nvgpu_alloc_sim_buffer(g, &g->sim->recv_bfr);
308 err = err || nvgpu_alloc_sim_buffer(g, &g->sim->msg_bfr);
309
310 if (err)
311 goto fail;
312
313 g->sim->sim_init_late = nvgpu_sim_init_late;
303 g->sim->remove_support = nvgpu_remove_sim_support; 314 g->sim->remove_support = nvgpu_remove_sim_support;
304 g->sim->esc_readl = nvgpu_sim_esc_readl; 315 g->sim->esc_readl = nvgpu_sim_esc_readl;
305 return 0; 316 return 0;