diff options
author | Seema Khowala <seemaj@nvidia.com> | 2018-06-04 17:38:52 -0400 |
---|---|---|
committer | mobile promotions <svcmobile_promotions@nvidia.com> | 2018-06-24 12:53:23 -0400 |
commit | 3eede64de058fcb1e39d723dd146bcd5d06c6f43 (patch) | |
tree | 693561f2b69d55551f0a700f33387209fd1a28f2 /drivers/gpu/nvgpu | |
parent | 1407133b7e1b27a92ee8c116009541904d2ff691 (diff) |
gpu: nvgpu: gv11b: preempt timeout set to 1000 ms
For Si platforms, gk20a_get_gr_idle_timeout returns
3000 ms i.e. 3 sec. Currently this time is used for
polling each pbdma, eng and runlist and this conflicts
channel timeout if preempt fails.
Use 1000 ms timeout for polling preempt timeout when
timeouts are enabled else use gk20a_get_gr_idle_timeout.
For non-si platforms, polling loop is depending on
max number of retries.
Bug 2125776
Bug 2108544
Bug 2105322
Bug 2092051
Bug 2048824
Bug 2043838
Bug 2039587
Bug 2028993
Bug 2029245
Bug 2065990
Bug 1945121
Bug 200401707
Bug 200393631
Bug 200327596
Change-Id: Icdb69b7b7d17292f2b6a43f1d8e9d75ff545d0ae
Signed-off-by: Seema Khowala <seemaj@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/1739543
Reviewed-by: Automatic_Commit_Validation_User
Reviewed-by: svc-mobile-coverity <svc-mobile-coverity@nvidia.com>
GVS: Gerrit_Virtual_Submit
Reviewed-by: Terje Bergstrom <tbergstrom@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu')
-rw-r--r-- | drivers/gpu/nvgpu/gv11b/fifo_gv11b.c | 8 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/gv11b/fifo_gv11b.h | 1 |
2 files changed, 8 insertions, 1 deletions
diff --git a/drivers/gpu/nvgpu/gv11b/fifo_gv11b.c b/drivers/gpu/nvgpu/gv11b/fifo_gv11b.c index 13d498a7..abea39b6 100644 --- a/drivers/gpu/nvgpu/gv11b/fifo_gv11b.c +++ b/drivers/gpu/nvgpu/gv11b/fifo_gv11b.c | |||
@@ -381,7 +381,13 @@ u32 gv11b_fifo_intr_0_error_mask(struct gk20a *g) | |||
381 | 381 | ||
382 | u32 gv11b_fifo_get_preempt_timeout(struct gk20a *g) | 382 | u32 gv11b_fifo_get_preempt_timeout(struct gk20a *g) |
383 | { | 383 | { |
384 | return gk20a_get_gr_idle_timeout(g); | 384 | /* if timeouts are enabled, using 3000ms timeout |
385 | * for polling pdma/eng/runlist might kick in | ||
386 | * timeout handler in the cases where preempt | ||
387 | * is stuck. Use 1000ms timeout for polling when | ||
388 | * timeouts are enabled */ | ||
389 | return nvgpu_is_timeouts_enabled(g) ? PREEMPT_TIMEOUT_1000_MS : | ||
390 | g->gr_idle_timeout_default; | ||
385 | } | 391 | } |
386 | 392 | ||
387 | static int gv11b_fifo_poll_pbdma_chan_status(struct gk20a *g, u32 id, | 393 | static int gv11b_fifo_poll_pbdma_chan_status(struct gk20a *g, u32 id, |
diff --git a/drivers/gpu/nvgpu/gv11b/fifo_gv11b.h b/drivers/gpu/nvgpu/gv11b/fifo_gv11b.h index 5ff16453..66efdd3b 100644 --- a/drivers/gpu/nvgpu/gv11b/fifo_gv11b.h +++ b/drivers/gpu/nvgpu/gv11b/fifo_gv11b.h | |||
@@ -51,6 +51,7 @@ | |||
51 | #define CHANNEL_INFO_VEID0 0 | 51 | #define CHANNEL_INFO_VEID0 0 |
52 | 52 | ||
53 | #define MAX_PRE_SI_RETRIES 200000 /* 1G/500KHz * 100 */ | 53 | #define MAX_PRE_SI_RETRIES 200000 /* 1G/500KHz * 100 */ |
54 | #define PREEMPT_TIMEOUT_1000_MS 1000 | ||
54 | 55 | ||
55 | struct gpu_ops; | 56 | struct gpu_ops; |
56 | 57 | ||