diff options
author | Thomas Fleury <tfleury@nvidia.com> | 2016-08-17 20:26:30 -0400 |
---|---|---|
committer | mobile promotions <svcmobile_promotions@nvidia.com> | 2016-08-29 19:14:29 -0400 |
commit | 5286fd525731d19dfa07d5e6e49e8d0eef233531 (patch) | |
tree | 6c64a7976d8e8795fb6bfda75cdfc7b058a4ecf8 /drivers/gpu/nvgpu/gk20a/channel_gk20a.h | |
parent | 06780e0681b34ec570346fe5d4bdaf7a23f08a36 (diff) |
gpu: nvgpu: fix ctxsw timeout handling for TSGs
While collecting failing engine data, id type (is_tsg) was not
set for ctxsw and save engine states. This could result in some
ctxsw timeout interrupts to be ignored (id reported with wrong
is_tsg).
For TSGs, check if we made some progress on any of the channels
before kicking fifo recovery.
Bug 200228310
Jira EVLR-597
Change-Id: I231549ae68317919532de0f87effb78ee9c119c6
Signed-off-by: Thomas Fleury <tfleury@nvidia.com>
Reviewed-on: http://git-master/r/1204035
(cherry picked from commit 7221d256fd7e9b418f7789b3d81eede8faa16f0b)
Reviewed-on: http://git-master/r/1204037
Reviewed-by: Richard Zhao <rizhao@nvidia.com>
GVS: Gerrit_Virtual_Submit
Reviewed-by: Terje Bergstrom <tbergstrom@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a/channel_gk20a.h')
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/channel_gk20a.h | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/channel_gk20a.h b/drivers/gpu/nvgpu/gk20a/channel_gk20a.h index 971175f2..6469603b 100644 --- a/drivers/gpu/nvgpu/gk20a/channel_gk20a.h +++ b/drivers/gpu/nvgpu/gk20a/channel_gk20a.h | |||
@@ -218,7 +218,7 @@ int gk20a_init_channel_support(struct gk20a *, u32 chid); | |||
218 | void gk20a_channel_close(struct channel_gk20a *ch); | 218 | void gk20a_channel_close(struct channel_gk20a *ch); |
219 | 219 | ||
220 | bool gk20a_channel_update_and_check_timeout(struct channel_gk20a *ch, | 220 | bool gk20a_channel_update_and_check_timeout(struct channel_gk20a *ch, |
221 | u32 timeout_delta_ms); | 221 | u32 timeout_delta_ms, bool *progress); |
222 | void gk20a_disable_channel(struct channel_gk20a *ch); | 222 | void gk20a_disable_channel(struct channel_gk20a *ch); |
223 | void gk20a_channel_abort(struct channel_gk20a *ch, bool channel_preempt); | 223 | void gk20a_channel_abort(struct channel_gk20a *ch, bool channel_preempt); |
224 | void gk20a_channel_abort_clean_up(struct channel_gk20a *ch); | 224 | void gk20a_channel_abort_clean_up(struct channel_gk20a *ch); |