summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gk20a/fifo_gk20a.c
diff options
context:
space:
mode:
authorKonsta Holtta <kholtta@nvidia.com>2017-05-19 08:25:44 -0400
committermobile promotions <svcmobile_promotions@nvidia.com>2017-05-24 15:14:19 -0400
commitf0444184278c356735420f0f88da744bf7adcdf7 (patch)
tree40d38508ae7593f45866c938079dfa0c0b5ae7bc /drivers/gpu/nvgpu/gk20a/fifo_gk20a.c
parentb70bad4b9f40e94f731fd9d509e1f3f6617f0b05 (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.c11
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
4215u64 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
4215void gk20a_fifo_userd_gp_put(struct gk20a *g, struct channel_gk20a *c) 4225void 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;