diff options
author | Seema Khowala <seemaj@nvidia.com> | 2017-10-30 17:15:51 -0400 |
---|---|---|
committer | mobile promotions <svcmobile_promotions@nvidia.com> | 2018-05-18 22:54:33 -0400 |
commit | 982fcfa737be54fd0ab16792faf97a2741e34907 (patch) | |
tree | 6c45741a08156d43d2ea09a4136c104609989e42 /drivers/gpu/nvgpu/gk20a/gk20a.h | |
parent | ac687c95d383c3fb0165e6535893510409559a8e (diff) |
gpu: nvgpu: Add timeouts_disabled_refcount for enabling timeout
-timeouts will be enabled only when timeouts_disabled_refcount
will reach 0
-timeouts_enabled debugfs will change from u32 type to file type
to avoid race enabling/disabling timeout from debugfs and ioctl
-unify setting timeouts_enabled from debugfs and ioctl
Bug 1982434
Change-Id: I54bab778f1ae533872146dfb8d80deafd2a685c7
Signed-off-by: Seema Khowala <seemaj@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/1588690
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a/gk20a.h')
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/gk20a.h | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/gk20a.h b/drivers/gpu/nvgpu/gk20a/gk20a.h index 84d3f639..f6318257 100644 --- a/drivers/gpu/nvgpu/gk20a/gk20a.h +++ b/drivers/gpu/nvgpu/gk20a/gk20a.h | |||
@@ -1314,7 +1314,7 @@ struct gk20a { | |||
1314 | struct railgate_stats pstats; | 1314 | struct railgate_stats pstats; |
1315 | #endif | 1315 | #endif |
1316 | u32 gr_idle_timeout_default; | 1316 | u32 gr_idle_timeout_default; |
1317 | bool timeouts_enabled; | 1317 | bool timeouts_disabled_by_user; |
1318 | unsigned int ch_wdt_timeout_ms; | 1318 | unsigned int ch_wdt_timeout_ms; |
1319 | 1319 | ||
1320 | struct nvgpu_mutex poweron_lock; | 1320 | struct nvgpu_mutex poweron_lock; |
@@ -1376,7 +1376,8 @@ struct gk20a { | |||
1376 | /* also prevents debug sessions from attaching until released */ | 1376 | /* also prevents debug sessions from attaching until released */ |
1377 | struct nvgpu_mutex dbg_sessions_lock; | 1377 | struct nvgpu_mutex dbg_sessions_lock; |
1378 | int dbg_powergating_disabled_refcount; /*refcount for pg disable */ | 1378 | int dbg_powergating_disabled_refcount; /*refcount for pg disable */ |
1379 | int dbg_timeout_disabled_refcount; /*refcount for timeout disable */ | 1379 | /*refcount for timeout disable */ |
1380 | nvgpu_atomic_t timeouts_disabled_refcount; | ||
1380 | 1381 | ||
1381 | /* must have dbg_sessions_lock before use */ | 1382 | /* must have dbg_sessions_lock before use */ |
1382 | struct nvgpu_dbg_reg_op *dbg_regops_tmp_buf; | 1383 | struct nvgpu_dbg_reg_op *dbg_regops_tmp_buf; |
@@ -1508,9 +1509,14 @@ struct gk20a { | |||
1508 | struct nvgpu_list_node boardobjgrp_head; | 1509 | struct nvgpu_list_node boardobjgrp_head; |
1509 | }; | 1510 | }; |
1510 | 1511 | ||
1512 | static inline bool nvgpu_is_timeouts_enabled(struct gk20a *g) | ||
1513 | { | ||
1514 | return nvgpu_atomic_read(&g->timeouts_disabled_refcount) == 0; | ||
1515 | } | ||
1516 | |||
1511 | static inline unsigned long gk20a_get_gr_idle_timeout(struct gk20a *g) | 1517 | static inline unsigned long gk20a_get_gr_idle_timeout(struct gk20a *g) |
1512 | { | 1518 | { |
1513 | return g->timeouts_enabled ? | 1519 | return nvgpu_is_timeouts_enabled(g) ? |
1514 | g->gr_idle_timeout_default : ULONG_MAX; | 1520 | g->gr_idle_timeout_default : ULONG_MAX; |
1515 | } | 1521 | } |
1516 | 1522 | ||