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>
This commit is contained in:
Seema Khowala
2018-06-04 14:38:52 -07:00
committed by mobile promotions
parent 1407133b7e
commit 3eede64de0
2 changed files with 8 additions and 1 deletions

View File

@@ -381,7 +381,13 @@ u32 gv11b_fifo_intr_0_error_mask(struct gk20a *g)
u32 gv11b_fifo_get_preempt_timeout(struct gk20a *g)
{
return gk20a_get_gr_idle_timeout(g);
/* if timeouts are enabled, using 3000ms timeout
* for polling pdma/eng/runlist might kick in
* timeout handler in the cases where preempt
* is stuck. Use 1000ms timeout for polling when
* timeouts are enabled */
return nvgpu_is_timeouts_enabled(g) ? PREEMPT_TIMEOUT_1000_MS :
g->gr_idle_timeout_default;
}
static int gv11b_fifo_poll_pbdma_chan_status(struct gk20a *g, u32 id,

View File

@@ -51,6 +51,7 @@
#define CHANNEL_INFO_VEID0 0
#define MAX_PRE_SI_RETRIES 200000 /* 1G/500KHz * 100 */
#define PREEMPT_TIMEOUT_1000_MS 1000
struct gpu_ops;