summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/include/nvgpu/hw/gk20a
diff options
context:
space:
mode:
authorCory Perry <cperry@nvidia.com>2017-03-07 12:32:53 -0500
committermobile promotions <svcmobile_promotions@nvidia.com>2017-03-14 14:46:52 -0400
commitde568db9dee599fa27cdc2ead88186099fff3c3b (patch)
treee7f448c7b79aece79e4a98aef334f17d8fedca40 /drivers/gpu/nvgpu/include/nvgpu/hw/gk20a
parent403874fa75dbb00e974a8d0f88b6e92be01ba42e (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/gk20a')
-rw-r--r--drivers/gpu/nvgpu/include/nvgpu/hw/gk20a/hw_gr_gk20a.h14
1 files changed, 13 insertions, 1 deletions
diff --git a/drivers/gpu/nvgpu/include/nvgpu/hw/gk20a/hw_gr_gk20a.h b/drivers/gpu/nvgpu/include/nvgpu/hw/gk20a/hw_gr_gk20a.h
index 1a888b53..7f6f58f3 100644
--- a/drivers/gpu/nvgpu/include/nvgpu/hw/gk20a/hw_gr_gk20a.h
+++ b/drivers/gpu/nvgpu/include/nvgpu/hw/gk20a/hw_gr_gk20a.h
@@ -1,5 +1,5 @@
1/* 1/*
2 * Copyright (c) 2014-2016, NVIDIA CORPORATION. All rights reserved. 2 * Copyright (c) 2014-2017, NVIDIA CORPORATION. All rights reserved.
3 * 3 *
4 * This program is free software; you can redistribute it and/or modify it 4 * This program is free software; you can redistribute it and/or modify it
5 * under the terms and conditions of the GNU General Public License, 5 * under the terms and conditions of the GNU General Public License,
@@ -3178,14 +3178,26 @@ static inline u32 gr_gpc0_tpc0_sm_warp_valid_mask_r(void)
3178{ 3178{
3179 return 0x00504614; 3179 return 0x00504614;
3180} 3180}
3181static inline u32 gr_gpc0_tpc0_sm_warp_valid_mask_1_r(void)
3182{
3183 return 0x00504618;
3184}
3181static inline u32 gr_gpc0_tpc0_sm_dbgr_bpt_pause_mask_r(void) 3185static inline u32 gr_gpc0_tpc0_sm_dbgr_bpt_pause_mask_r(void)
3182{ 3186{
3183 return 0x00504624; 3187 return 0x00504624;
3184} 3188}
3189static inline u32 gr_gpc0_tpc0_sm_dbgr_bpt_pause_mask_1_r(void)
3190{
3191 return 0x00504628;
3192}
3185static inline u32 gr_gpc0_tpc0_sm_dbgr_bpt_trap_mask_r(void) 3193static inline u32 gr_gpc0_tpc0_sm_dbgr_bpt_trap_mask_r(void)
3186{ 3194{
3187 return 0x00504634; 3195 return 0x00504634;
3188} 3196}
3197static inline u32 gr_gpc0_tpc0_sm_dbgr_bpt_trap_mask_1_r(void)
3198{
3199 return 0x00504638;
3200}
3189static inline u32 gr_gpcs_tpcs_sm_dbgr_bpt_pause_mask_r(void) 3201static inline u32 gr_gpcs_tpcs_sm_dbgr_bpt_pause_mask_r(void)
3190{ 3202{
3191 return 0x00419e24; 3203 return 0x00419e24;