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>
This commit is contained in:
Martin Radev
2018-03-05 14:12:10 +02:00
committed by mobile promotions
parent da9b549cd1
commit a83c99ecb4
4 changed files with 12 additions and 11 deletions

View File

@@ -707,7 +707,7 @@ static const struct gpu_ops gv100_ops = {
.enable_snapshot = gv11b_css_hw_enable_snapshot, .enable_snapshot = gv11b_css_hw_enable_snapshot,
.disable_snapshot = gv11b_css_hw_disable_snapshot, .disable_snapshot = gv11b_css_hw_disable_snapshot,
.check_data_available = gv11b_css_hw_check_data_available, .check_data_available = gv11b_css_hw_check_data_available,
.set_handled_snapshots = css_hw_set_handled_snapshots, .set_handled_snapshots = gv11b_css_hw_set_handled_snapshots,
.allocate_perfmon_ids = css_gr_allocate_perfmon_ids, .allocate_perfmon_ids = css_gr_allocate_perfmon_ids,
.release_perfmon_ids = css_gr_release_perfmon_ids, .release_perfmon_ids = css_gr_release_perfmon_ids,
}, },

View File

@@ -57,15 +57,6 @@ static inline u32 css_hw_get_pending_snapshots(struct gk20a *g)
sizeof(struct gk20a_cs_snapshot_fifo_entry); sizeof(struct gk20a_cs_snapshot_fifo_entry);
} }
/* informs hw how many snapshots have been processed (frees up fifo space) */
static inline void gv11b_css_hw_set_handled_snapshots(struct gk20a *g, u32 done)
{
if (done > 0) {
gk20a_writel(g, perf_pmasys_mem_bump_r(),
done * sizeof(struct gk20a_cs_snapshot_fifo_entry));
}
}
/* disable streaming to memory */ /* disable streaming to memory */
static void gv11b_css_hw_reset_streaming(struct gk20a *g) static void gv11b_css_hw_reset_streaming(struct gk20a *g)
{ {
@@ -86,6 +77,15 @@ static void gv11b_css_hw_reset_streaming(struct gk20a *g)
gv11b_css_hw_set_handled_snapshots(g, css_hw_get_pending_snapshots(g)); gv11b_css_hw_set_handled_snapshots(g, css_hw_get_pending_snapshots(g));
} }
/* informs hw how many snapshots have been processed (frees up fifo space) */
void gv11b_css_hw_set_handled_snapshots(struct gk20a *g, u32 done)
{
if (done > 0) {
gk20a_writel(g, perf_pmasys_mem_bump_r(),
done * sizeof(struct gk20a_cs_snapshot_fifo_entry));
}
}
int gv11b_css_hw_enable_snapshot(struct channel_gk20a *ch, int gv11b_css_hw_enable_snapshot(struct channel_gk20a *ch,
struct gk20a_cs_snapshot_client *cs_client) struct gk20a_cs_snapshot_client *cs_client)
{ {

View File

@@ -30,5 +30,6 @@ int gv11b_css_hw_enable_snapshot(struct channel_gk20a *ch,
void gv11b_css_hw_disable_snapshot(struct gr_gk20a *gr); void gv11b_css_hw_disable_snapshot(struct gr_gk20a *gr);
int gv11b_css_hw_check_data_available(struct channel_gk20a *ch, u32 *pending, int gv11b_css_hw_check_data_available(struct channel_gk20a *ch, u32 *pending,
bool *hw_overflow); bool *hw_overflow);
void gv11b_css_hw_set_handled_snapshots(struct gk20a *g, u32 done);
#endif /* CSS_GR_GV11B_H */ #endif /* CSS_GR_GV11B_H */

View File

@@ -695,7 +695,7 @@ static const struct gpu_ops gv11b_ops = {
.enable_snapshot = gv11b_css_hw_enable_snapshot, .enable_snapshot = gv11b_css_hw_enable_snapshot,
.disable_snapshot = gv11b_css_hw_disable_snapshot, .disable_snapshot = gv11b_css_hw_disable_snapshot,
.check_data_available = gv11b_css_hw_check_data_available, .check_data_available = gv11b_css_hw_check_data_available,
.set_handled_snapshots = css_hw_set_handled_snapshots, .set_handled_snapshots = gv11b_css_hw_set_handled_snapshots,
.allocate_perfmon_ids = css_gr_allocate_perfmon_ids, .allocate_perfmon_ids = css_gr_allocate_perfmon_ids,
.release_perfmon_ids = css_gr_release_perfmon_ids, .release_perfmon_ids = css_gr_release_perfmon_ids,
}, },