diff options
author | Martin Radev <mradev@nvidia.com> | 2018-03-05 07:12:10 -0500 |
---|---|---|
committer | mobile promotions <svcmobile_promotions@nvidia.com> | 2018-03-08 14:04:31 -0500 |
commit | a83c99ecb41c5fa0b287efafa22db0e9770ab3e4 (patch) | |
tree | af5a81edd87c39286ef38526e62e171c86557e21 /drivers | |
parent | da9b549cd15b2f193a1c8b30f96d4106b28ddd30 (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.
Bug 1960846
Bug 2068936
Change-Id: Ic057338d3b1b951a66d070267e69a90f136598b9
Signed-off-by: Martin Radev <mradev@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/1668568
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/gpu/nvgpu/gv100/hal_gv100.c | 2 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/gv11b/css_gr_gv11b.c | 18 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/gv11b/css_gr_gv11b.h | 1 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/gv11b/hal_gv11b.c | 2 |
4 files changed, 12 insertions, 11 deletions
diff --git a/drivers/gpu/nvgpu/gv100/hal_gv100.c b/drivers/gpu/nvgpu/gv100/hal_gv100.c index 802a43af..70fceea9 100644 --- a/drivers/gpu/nvgpu/gv100/hal_gv100.c +++ b/drivers/gpu/nvgpu/gv100/hal_gv100.c | |||
@@ -707,7 +707,7 @@ static const struct gpu_ops gv100_ops = { | |||
707 | .enable_snapshot = gv11b_css_hw_enable_snapshot, | 707 | .enable_snapshot = gv11b_css_hw_enable_snapshot, |
708 | .disable_snapshot = gv11b_css_hw_disable_snapshot, | 708 | .disable_snapshot = gv11b_css_hw_disable_snapshot, |
709 | .check_data_available = gv11b_css_hw_check_data_available, | 709 | .check_data_available = gv11b_css_hw_check_data_available, |
710 | .set_handled_snapshots = css_hw_set_handled_snapshots, | 710 | .set_handled_snapshots = gv11b_css_hw_set_handled_snapshots, |
711 | .allocate_perfmon_ids = css_gr_allocate_perfmon_ids, | 711 | .allocate_perfmon_ids = css_gr_allocate_perfmon_ids, |
712 | .release_perfmon_ids = css_gr_release_perfmon_ids, | 712 | .release_perfmon_ids = css_gr_release_perfmon_ids, |
713 | }, | 713 | }, |
diff --git a/drivers/gpu/nvgpu/gv11b/css_gr_gv11b.c b/drivers/gpu/nvgpu/gv11b/css_gr_gv11b.c index 86977bb3..bb7c37bd 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,15 @@ 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 > 0) { | ||
84 | gk20a_writel(g, perf_pmasys_mem_bump_r(), | ||
85 | done * sizeof(struct gk20a_cs_snapshot_fifo_entry)); | ||
86 | } | ||
87 | } | ||
88 | |||
89 | int gv11b_css_hw_enable_snapshot(struct channel_gk20a *ch, | 89 | int gv11b_css_hw_enable_snapshot(struct channel_gk20a *ch, |
90 | struct gk20a_cs_snapshot_client *cs_client) | 90 | struct gk20a_cs_snapshot_client *cs_client) |
91 | { | 91 | { |
diff --git a/drivers/gpu/nvgpu/gv11b/css_gr_gv11b.h b/drivers/gpu/nvgpu/gv11b/css_gr_gv11b.h index 6b11a62e..186f5fcc 100644 --- a/drivers/gpu/nvgpu/gv11b/css_gr_gv11b.h +++ b/drivers/gpu/nvgpu/gv11b/css_gr_gv11b.h | |||
@@ -30,5 +30,6 @@ int gv11b_css_hw_enable_snapshot(struct channel_gk20a *ch, | |||
30 | void gv11b_css_hw_disable_snapshot(struct gr_gk20a *gr); | 30 | void gv11b_css_hw_disable_snapshot(struct gr_gk20a *gr); |
31 | int gv11b_css_hw_check_data_available(struct channel_gk20a *ch, u32 *pending, | 31 | int gv11b_css_hw_check_data_available(struct channel_gk20a *ch, u32 *pending, |
32 | bool *hw_overflow); | 32 | bool *hw_overflow); |
33 | void gv11b_css_hw_set_handled_snapshots(struct gk20a *g, u32 done); | ||
33 | 34 | ||
34 | #endif /* CSS_GR_GV11B_H */ | 35 | #endif /* CSS_GR_GV11B_H */ |
diff --git a/drivers/gpu/nvgpu/gv11b/hal_gv11b.c b/drivers/gpu/nvgpu/gv11b/hal_gv11b.c index 2443a4b1..86bdc884 100644 --- a/drivers/gpu/nvgpu/gv11b/hal_gv11b.c +++ b/drivers/gpu/nvgpu/gv11b/hal_gv11b.c | |||
@@ -695,7 +695,7 @@ static const struct gpu_ops gv11b_ops = { | |||
695 | .enable_snapshot = gv11b_css_hw_enable_snapshot, | 695 | .enable_snapshot = gv11b_css_hw_enable_snapshot, |
696 | .disable_snapshot = gv11b_css_hw_disable_snapshot, | 696 | .disable_snapshot = gv11b_css_hw_disable_snapshot, |
697 | .check_data_available = gv11b_css_hw_check_data_available, | 697 | .check_data_available = gv11b_css_hw_check_data_available, |
698 | .set_handled_snapshots = css_hw_set_handled_snapshots, | 698 | .set_handled_snapshots = gv11b_css_hw_set_handled_snapshots, |
699 | .allocate_perfmon_ids = css_gr_allocate_perfmon_ids, | 699 | .allocate_perfmon_ids = css_gr_allocate_perfmon_ids, |
700 | .release_perfmon_ids = css_gr_release_perfmon_ids, | 700 | .release_perfmon_ids = css_gr_release_perfmon_ids, |
701 | }, | 701 | }, |