summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gv11b/css_gr_gv11b.c
diff options
context:
space:
mode:
authorMartin Radev <mradev@nvidia.com>2018-02-22 07:06:48 -0500
committermobile promotions <svcmobile_promotions@nvidia.com>2018-02-26 15:03:24 -0500
commit2f2e51bbae39009d0305f6aaf01596571a8f5d5c (patch)
tree5c4291304f58abb6b75980cfac2a4ece27b2eca3 /drivers/gpu/nvgpu/gv11b/css_gr_gv11b.c
parentd98232ab21df04605cfc453528d12aab8af25b49 (diff)
gpu: nvgpu: Use gv11b_css_hw_set_handled_snapshots for GV11B
The value of NV_PERF_PMASYS_MEM_BUMP is different for Volta and NVGPU_IOCTL_CHANNEL_CYCLE_STATS_SNAPSHOT_CMD_FLUSH did not have correct behavior on GV11B due to that. The patch adds an instance of css_hw_set_handled_snapshots for Volta to fix that. The patch also renames css_hw_set_handled_snapshots to gk20a_css_hw_set_handled_snapshots to make it more clear that the function is arch dependent. Bug 1960846 Change-Id: I92c35a862ecd7f918dd1458c086fc7ae42ca8fc5 Signed-off-by: Martin Radev <mradev@nvidia.com> Reviewed-on: https://git-master.nvidia.com/r/1662427 Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com> Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/gv11b/css_gr_gv11b.c')
-rw-r--r--drivers/gpu/nvgpu/gv11b/css_gr_gv11b.c20
1 files changed, 11 insertions, 9 deletions
diff --git a/drivers/gpu/nvgpu/gv11b/css_gr_gv11b.c b/drivers/gpu/nvgpu/gv11b/css_gr_gv11b.c
index 617ea61d..d8ba332b 100644
--- a/drivers/gpu/nvgpu/gv11b/css_gr_gv11b.c
+++ b/drivers/gpu/nvgpu/gv11b/css_gr_gv11b.c
@@ -57,15 +57,6 @@ static inline u32 css_hw_get_pending_snapshots(struct gk20a *g)
57 sizeof(struct gk20a_cs_snapshot_fifo_entry); 57 sizeof(struct gk20a_cs_snapshot_fifo_entry);
58} 58}
59 59
60/* informs hw how many snapshots have been processed (frees up fifo space) */
61static inline void gv11b_css_hw_set_handled_snapshots(struct gk20a *g, u32 done)
62{
63 if (done > 0) {
64 gk20a_writel(g, perf_pmasys_mem_bump_r(),
65 done * sizeof(struct gk20a_cs_snapshot_fifo_entry));
66 }
67}
68
69/* disable streaming to memory */ 60/* disable streaming to memory */
70static void gv11b_css_hw_reset_streaming(struct gk20a *g) 61static void gv11b_css_hw_reset_streaming(struct gk20a *g)
71{ 62{
@@ -86,6 +77,17 @@ static void gv11b_css_hw_reset_streaming(struct gk20a *g)
86 gv11b_css_hw_set_handled_snapshots(g, css_hw_get_pending_snapshots(g)); 77 gv11b_css_hw_set_handled_snapshots(g, css_hw_get_pending_snapshots(g));
87} 78}
88 79
80/* informs hw how many snapshots have been processed (frees up fifo space) */
81void gv11b_css_hw_set_handled_snapshots(struct gk20a *g, u32 done)
82{
83 if (done == 0u) {
84 return;
85 }
86
87 gk20a_writel(g, perf_pmasys_mem_bump_r(),
88 done * sizeof(struct gk20a_cs_snapshot_fifo_entry));
89}
90
89int gv11b_css_hw_enable_snapshot(struct channel_gk20a *ch, 91int gv11b_css_hw_enable_snapshot(struct channel_gk20a *ch,
90 struct gk20a_cs_snapshot_client *cs_client) 92 struct gk20a_cs_snapshot_client *cs_client)
91{ 93{