diff options
author | Martin Radev <mradev@nvidia.com> | 2018-02-22 07:06:48 -0500 |
---|---|---|
committer | mobile promotions <svcmobile_promotions@nvidia.com> | 2018-02-26 15:03:24 -0500 |
commit | 2f2e51bbae39009d0305f6aaf01596571a8f5d5c (patch) | |
tree | 5c4291304f58abb6b75980cfac2a4ece27b2eca3 /drivers/gpu/nvgpu/gv11b/css_gr_gv11b.c | |
parent | d98232ab21df04605cfc453528d12aab8af25b49 (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.c | 20 |
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) */ | ||
61 | static 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 */ |
70 | static void gv11b_css_hw_reset_streaming(struct gk20a *g) | 61 | static 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) */ | ||
81 | void 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 | |||
89 | int gv11b_css_hw_enable_snapshot(struct channel_gk20a *ch, | 91 | int 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 | { |