summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gv11b/dbg_gpu_gv11b.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/nvgpu/gv11b/dbg_gpu_gv11b.c')
-rw-r--r--drivers/gpu/nvgpu/gv11b/dbg_gpu_gv11b.c25
1 files changed, 25 insertions, 0 deletions
diff --git a/drivers/gpu/nvgpu/gv11b/dbg_gpu_gv11b.c b/drivers/gpu/nvgpu/gv11b/dbg_gpu_gv11b.c
index 562476ca..0dad7c2d 100644
--- a/drivers/gpu/nvgpu/gv11b/dbg_gpu_gv11b.c
+++ b/drivers/gpu/nvgpu/gv11b/dbg_gpu_gv11b.c
@@ -25,6 +25,27 @@
25#include <nvgpu/log.h> 25#include <nvgpu/log.h>
26#include "gk20a/gk20a.h" 26#include "gk20a/gk20a.h"
27#include <nvgpu/hw/gv11b/hw_perf_gv11b.h> 27#include <nvgpu/hw/gv11b/hw_perf_gv11b.h>
28#include <nvgpu/hw/gv11b/hw_mc_gv11b.h>
29
30static void gv11b_perfbuf_reset_streaming(struct gk20a *g)
31{
32 u32 engine_status;
33 u32 num_unread_bytes;
34
35 g->ops.mc.reset(g, mc_enable_perfmon_enabled_f());
36
37 engine_status = gk20a_readl(g, perf_pmasys_enginestatus_r());
38 WARN_ON(0u ==
39 (engine_status & perf_pmasys_enginestatus_rbufempty_empty_f()));
40
41 gk20a_writel(g, perf_pmasys_control_r(),
42 perf_pmasys_control_membuf_clear_status_doit_f());
43
44 num_unread_bytes = gk20a_readl(g, perf_pmasys_mem_bytes_r());
45 if (num_unread_bytes != 0u) {
46 gk20a_writel(g, perf_pmasys_mem_bump_r(), num_unread_bytes);
47 }
48}
28 49
29int gv11b_perfbuf_enable_locked(struct gk20a *g, u64 offset, u32 size) 50int gv11b_perfbuf_enable_locked(struct gk20a *g, u64 offset, u32 size)
30{ 51{
@@ -47,6 +68,8 @@ int gv11b_perfbuf_enable_locked(struct gk20a *g, u64 offset, u32 size)
47 68
48 g->ops.mm.init_inst_block(&mm->perfbuf.inst_block, mm->perfbuf.vm, 0); 69 g->ops.mm.init_inst_block(&mm->perfbuf.inst_block, mm->perfbuf.vm, 0);
49 70
71 gv11b_perfbuf_reset_streaming(g);
72
50 virt_addr_lo = u64_lo32(offset); 73 virt_addr_lo = u64_lo32(offset);
51 virt_addr_hi = u64_hi32(offset); 74 virt_addr_hi = u64_hi32(offset);
52 75
@@ -82,6 +105,8 @@ int gv11b_perfbuf_disable_locked(struct gk20a *g)
82 return err; 105 return err;
83 } 106 }
84 107
108 gv11b_perfbuf_reset_streaming(g);
109
85 gk20a_writel(g, perf_pmasys_outbase_r(), 0); 110 gk20a_writel(g, perf_pmasys_outbase_r(), 0);
86 gk20a_writel(g, perf_pmasys_outbaseupper_r(), 111 gk20a_writel(g, perf_pmasys_outbaseupper_r(),
87 perf_pmasys_outbaseupper_ptr_f(0)); 112 perf_pmasys_outbaseupper_ptr_f(0));