diff options
Diffstat (limited to 'drivers/gpu/nvgpu/common/sim.c')
-rw-r--r-- | drivers/gpu/nvgpu/common/sim.c | 35 |
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 | ||
254 | int nvgpu_init_sim_support(struct gk20a *g) | 253 | static 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 | |||
298 | int 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; |