diff options
author | Konsta Holtta <kholtta@nvidia.com> | 2017-05-19 08:25:44 -0400 |
---|---|---|
committer | mobile promotions <svcmobile_promotions@nvidia.com> | 2017-05-24 15:14:19 -0400 |
commit | f0444184278c356735420f0f88da744bf7adcdf7 (patch) | |
tree | 40d38508ae7593f45866c938079dfa0c0b5ae7bc /drivers/gpu/nvgpu/gk20a/fifo_gk20a.c | |
parent | b70bad4b9f40e94f731fd9d509e1f3f6617f0b05 (diff) |
gpu: nvgpu: Track also pushbuf get for watchdog
Make the watchdog notice also fine-grained changes within a single
pushbuffer - by tracking just the gpfifo get, the watchdog could wake
when the channel hasn't really been stuck but processing a relatively
large or slow pushbuf.
Jira NVGPU-72
Change-Id: I15374eea5d9abc9d3725a79d0b960503237e478c
Signed-off-by: Konsta Holtta <kholtta@nvidia.com>
Reviewed-on: http://git-master/r/1485919
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a/fifo_gk20a.c')
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/fifo_gk20a.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/fifo_gk20a.c b/drivers/gpu/nvgpu/gk20a/fifo_gk20a.c index f536b374..f2fc6234 100644 --- a/drivers/gpu/nvgpu/gk20a/fifo_gk20a.c +++ b/drivers/gpu/nvgpu/gk20a/fifo_gk20a.c | |||
@@ -4212,6 +4212,16 @@ u32 gk20a_fifo_userd_gp_get(struct gk20a *g, struct channel_gk20a *c) | |||
4212 | c->userd_gpu_va + sizeof(u32) * ram_userd_gp_get_w()); | 4212 | c->userd_gpu_va + sizeof(u32) * ram_userd_gp_get_w()); |
4213 | } | 4213 | } |
4214 | 4214 | ||
4215 | u64 gk20a_fifo_userd_pb_get(struct gk20a *g, struct channel_gk20a *c) | ||
4216 | { | ||
4217 | u32 lo = gk20a_bar1_readl(g, | ||
4218 | c->userd_gpu_va + sizeof(u32) * ram_userd_get_w()); | ||
4219 | u32 hi = gk20a_bar1_readl(g, | ||
4220 | c->userd_gpu_va + sizeof(u32) * ram_userd_get_hi_w()); | ||
4221 | |||
4222 | return ((u64)hi << 32) | lo; | ||
4223 | } | ||
4224 | |||
4215 | void gk20a_fifo_userd_gp_put(struct gk20a *g, struct channel_gk20a *c) | 4225 | void gk20a_fifo_userd_gp_put(struct gk20a *g, struct channel_gk20a *c) |
4216 | { | 4226 | { |
4217 | gk20a_bar1_writel(g, | 4227 | gk20a_bar1_writel(g, |
@@ -4297,6 +4307,7 @@ void gk20a_init_fifo(struct gpu_ops *gops) | |||
4297 | gops->fifo.setup_userd = gk20a_fifo_setup_userd; | 4307 | gops->fifo.setup_userd = gk20a_fifo_setup_userd; |
4298 | gops->fifo.userd_gp_get = gk20a_fifo_userd_gp_get; | 4308 | gops->fifo.userd_gp_get = gk20a_fifo_userd_gp_get; |
4299 | gops->fifo.userd_gp_put = gk20a_fifo_userd_gp_put; | 4309 | gops->fifo.userd_gp_put = gk20a_fifo_userd_gp_put; |
4310 | gops->fifo.userd_pb_get = gk20a_fifo_userd_pb_get; | ||
4300 | gops->fifo.pbdma_acquire_val = gk20a_fifo_pbdma_acquire_val; | 4311 | gops->fifo.pbdma_acquire_val = gk20a_fifo_pbdma_acquire_val; |
4301 | gops->fifo.teardown_ch_tsg = gk20a_fifo_teardown_ch_tsg; | 4312 | gops->fifo.teardown_ch_tsg = gk20a_fifo_teardown_ch_tsg; |
4302 | gops->fifo.handle_sched_error = gk20a_fifo_handle_sched_error; | 4313 | gops->fifo.handle_sched_error = gk20a_fifo_handle_sched_error; |