diff options
author | Cory Perry <cperry@nvidia.com> | 2017-03-07 12:32:53 -0500 |
---|---|---|
committer | mobile promotions <svcmobile_promotions@nvidia.com> | 2017-03-14 14:46:52 -0400 |
commit | de568db9dee599fa27cdc2ead88186099fff3c3b (patch) | |
tree | e7f448c7b79aece79e4a98aef334f17d8fedca40 /drivers/gpu/nvgpu/include/nvgpu/hw/gp106/hw_gr_gp106.h | |
parent | 403874fa75dbb00e974a8d0f88b6e92be01ba42e (diff) |
gpu: nvgpu: fix suspending all SMs
In gk20a_suspend_all_sms(), we currently loop
over all GPCs and then loop over all TPCs in inner
loop
But this is incorrect and leads to SM with
invalid GPC,TPC ids
Fix this by looping over number of TPCs in each
GPC in inner loop
Also, fix gk20a_gr_wait_for_sm_lock_down() as
per below
- we right now wait infinitely for SM to lock down
- restrict this wait with a timeout on silicon
platforms
- return ETIMEDOUT instead of EAGAIN
- add more debug prints with additional data
for SM lock down failures
Bug 200258704
Change-Id: Id6fe32e579647fd8ac287a4b2ec80cbf98791e0d
Signed-off-by: Cory Perry <cperry@nvidia.com>
Signed-off-by: Deepak Nibade <dnibade@nvidia.com>
Reviewed-on: http://git-master/r/1316471
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/include/nvgpu/hw/gp106/hw_gr_gp106.h')
-rw-r--r-- | drivers/gpu/nvgpu/include/nvgpu/hw/gp106/hw_gr_gp106.h | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/drivers/gpu/nvgpu/include/nvgpu/hw/gp106/hw_gr_gp106.h b/drivers/gpu/nvgpu/include/nvgpu/hw/gp106/hw_gr_gp106.h index c20da067..c6490f7a 100644 --- a/drivers/gpu/nvgpu/include/nvgpu/hw/gp106/hw_gr_gp106.h +++ b/drivers/gpu/nvgpu/include/nvgpu/hw/gp106/hw_gr_gp106.h | |||
@@ -3478,14 +3478,26 @@ static inline u32 gr_gpc0_tpc0_sm_warp_valid_mask_r(void) | |||
3478 | { | 3478 | { |
3479 | return 0x00504614; | 3479 | return 0x00504614; |
3480 | } | 3480 | } |
3481 | static inline u32 gr_gpc0_tpc0_sm_warp_valid_mask_1_r(void) | ||
3482 | { | ||
3483 | return 0x00504618; | ||
3484 | } | ||
3481 | static inline u32 gr_gpc0_tpc0_sm_dbgr_bpt_pause_mask_r(void) | 3485 | static inline u32 gr_gpc0_tpc0_sm_dbgr_bpt_pause_mask_r(void) |
3482 | { | 3486 | { |
3483 | return 0x00504624; | 3487 | return 0x00504624; |
3484 | } | 3488 | } |
3489 | static inline u32 gr_gpc0_tpc0_sm_dbgr_bpt_pause_mask_1_r(void) | ||
3490 | { | ||
3491 | return 0x00504628; | ||
3492 | } | ||
3485 | static inline u32 gr_gpc0_tpc0_sm_dbgr_bpt_trap_mask_r(void) | 3493 | static inline u32 gr_gpc0_tpc0_sm_dbgr_bpt_trap_mask_r(void) |
3486 | { | 3494 | { |
3487 | return 0x00504634; | 3495 | return 0x00504634; |
3488 | } | 3496 | } |
3497 | static inline u32 gr_gpc0_tpc0_sm_dbgr_bpt_trap_mask_1_r(void) | ||
3498 | { | ||
3499 | return 0x00504638; | ||
3500 | } | ||
3489 | static inline u32 gr_gpcs_tpcs_sm_dbgr_bpt_pause_mask_r(void) | 3501 | static inline u32 gr_gpcs_tpcs_sm_dbgr_bpt_pause_mask_r(void) |
3490 | { | 3502 | { |
3491 | return 0x00419e24; | 3503 | return 0x00419e24; |