diff options
Diffstat (limited to 'drivers/gpu')
-rw-r--r-- | drivers/gpu/nvgpu/gp10b/rpfb_gp10b.c | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/drivers/gpu/nvgpu/gp10b/rpfb_gp10b.c b/drivers/gpu/nvgpu/gp10b/rpfb_gp10b.c index ba91403c..59af5cde 100644 --- a/drivers/gpu/nvgpu/gp10b/rpfb_gp10b.c +++ b/drivers/gpu/nvgpu/gp10b/rpfb_gp10b.c | |||
@@ -33,11 +33,14 @@ int gp10b_replayable_pagefault_buffer_init(struct gk20a *g) | |||
33 | 33 | ||
34 | gk20a_dbg_fn(""); | 34 | gk20a_dbg_fn(""); |
35 | 35 | ||
36 | err = gk20a_gmmu_alloc_map(vm, rbfb_size, &g->mm.bar2_desc); | 36 | if (!g->mm.bar2_desc.gpu_va) { |
37 | if (err) { | 37 | err = gk20a_gmmu_alloc_map(vm, rbfb_size, |
38 | dev_err(dev_from_gk20a(g), "%s Error in replayable fault buffer\n", | 38 | &g->mm.bar2_desc); |
39 | __func__); | 39 | if (err) { |
40 | return err; | 40 | dev_err(dev_from_gk20a(g), |
41 | "%s Error in replayable fault buffer\n", __func__); | ||
42 | return err; | ||
43 | } | ||
41 | } | 44 | } |
42 | addr_lo = u64_lo32(g->mm.bar2_desc.gpu_va >> 12); | 45 | addr_lo = u64_lo32(g->mm.bar2_desc.gpu_va >> 12); |
43 | addr_hi = u64_hi32(g->mm.bar2_desc.gpu_va); | 46 | addr_hi = u64_hi32(g->mm.bar2_desc.gpu_va); |
@@ -47,7 +50,6 @@ int gp10b_replayable_pagefault_buffer_init(struct gk20a *g) | |||
47 | gk20a_writel(g, fifo_replay_fault_buffer_lo_r(), | 50 | gk20a_writel(g, fifo_replay_fault_buffer_lo_r(), |
48 | fifo_replay_fault_buffer_lo_base_f(addr_lo) | | 51 | fifo_replay_fault_buffer_lo_base_f(addr_lo) | |
49 | fifo_replay_fault_buffer_lo_enable_true_v()); | 52 | fifo_replay_fault_buffer_lo_enable_true_v()); |
50 | |||
51 | gk20a_dbg_fn("done"); | 53 | gk20a_dbg_fn("done"); |
52 | return 0; | 54 | return 0; |
53 | } | 55 | } |
@@ -55,12 +57,14 @@ int gp10b_replayable_pagefault_buffer_init(struct gk20a *g) | |||
55 | void gp10b_replayable_pagefault_buffer_deinit(struct gk20a *g) | 57 | void gp10b_replayable_pagefault_buffer_deinit(struct gk20a *g) |
56 | { | 58 | { |
57 | struct vm_gk20a *vm = &g->mm.bar2.vm; | 59 | struct vm_gk20a *vm = &g->mm.bar2.vm; |
60 | |||
58 | gk20a_gmmu_unmap_free(vm, &g->mm.bar2_desc); | 61 | gk20a_gmmu_unmap_free(vm, &g->mm.bar2_desc); |
59 | } | 62 | } |
60 | 63 | ||
61 | u32 gp10b_replayable_pagefault_buffer_get_index(struct gk20a *g) | 64 | u32 gp10b_replayable_pagefault_buffer_get_index(struct gk20a *g) |
62 | { | 65 | { |
63 | u32 get_idx = 0; | 66 | u32 get_idx = 0; |
67 | |||
64 | gk20a_dbg_fn(""); | 68 | gk20a_dbg_fn(""); |
65 | 69 | ||
66 | get_idx = gk20a_readl(g, fifo_replay_fault_buffer_get_r()); | 70 | get_idx = gk20a_readl(g, fifo_replay_fault_buffer_get_r()); |