diff options
author | Adeel Raza <araza@nvidia.com> | 2018-02-12 00:53:15 -0500 |
---|---|---|
committer | mobile promotions <svcmobile_promotions@nvidia.com> | 2018-04-23 13:03:59 -0400 |
commit | 0e3181a5d710a4ef066c81ec9d699dbcb3d9c995 (patch) | |
tree | 4d86356f44c430d541838e053c976241676c77d1 | |
parent | 24cf5916b7e503abce4d9a61c647636800acdacd (diff) |
gpu: nvgpu: add multiple nvlink recovery modes
Previously all nvlink recovery modes were being grouped under 1 enum.
Create an enum for each recovery mode, so the link can go into specific
recovery modes.
Bug 2090322
Change-Id: I5c2aea758f77b0286e3538424684ddceca98a873
Signed-off-by: Adeel Raza <araza@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/1698799
Reviewed-by: Automatic_Commit_Validation_User
Reviewed-by: Tejal Kudav <tkudav@nvidia.com>
Reviewed-by: Petlozu Pravareshwar <petlozup@nvidia.com>
Tested-by: Petlozu Pravareshwar <petlozup@nvidia.com>
GVS: Gerrit_Virtual_Submit
Reviewed-by: Vijayakumar Subbu <vsubbu@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
-rw-r--r-- | drivers/gpu/nvgpu/common/linux/nvlink.c | 18 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/gv100/nvlink_gv100.c | 10 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/include/nvgpu/nvlink.h | 4 |
3 files changed, 23 insertions, 9 deletions
diff --git a/drivers/gpu/nvgpu/common/linux/nvlink.c b/drivers/gpu/nvgpu/common/linux/nvlink.c index 61dc8bc7..f2faa682 100644 --- a/drivers/gpu/nvgpu/common/linux/nvlink.c +++ b/drivers/gpu/nvgpu/common/linux/nvlink.c | |||
@@ -138,8 +138,12 @@ static u32 nvgpu_nvlink_get_link_mode(struct nvlink_device *ndev) | |||
138 | return NVLINK_LINK_SAFE; | 138 | return NVLINK_LINK_SAFE; |
139 | case nvgpu_nvlink_link_fault: | 139 | case nvgpu_nvlink_link_fault: |
140 | return NVLINK_LINK_FAULT; | 140 | return NVLINK_LINK_FAULT; |
141 | case nvgpu_nvlink_link_recovery: | 141 | case nvgpu_nvlink_link_rcvy_ac: |
142 | return NVLINK_LINK_RECOVERY; | 142 | return NVLINK_LINK_RCVY_AC; |
143 | case nvgpu_nvlink_link_rcvy_sw: | ||
144 | return NVLINK_LINK_RCVY_SW; | ||
145 | case nvgpu_nvlink_link_rcvy_rx: | ||
146 | return NVLINK_LINK_RCVY_RX; | ||
143 | case nvgpu_nvlink_link_detect: | 147 | case nvgpu_nvlink_link_detect: |
144 | return NVLINK_LINK_DETECT; | 148 | return NVLINK_LINK_DETECT; |
145 | case nvgpu_nvlink_link_reset: | 149 | case nvgpu_nvlink_link_reset: |
@@ -198,8 +202,14 @@ static int nvgpu_nvlink_set_link_mode(struct nvlink_device *ndev, u32 mode) | |||
198 | case NVLINK_LINK_FAULT: | 202 | case NVLINK_LINK_FAULT: |
199 | mode_sw = nvgpu_nvlink_link_fault; | 203 | mode_sw = nvgpu_nvlink_link_fault; |
200 | break; | 204 | break; |
201 | case NVLINK_LINK_RECOVERY: | 205 | case NVLINK_LINK_RCVY_AC: |
202 | mode_sw = nvgpu_nvlink_link_recovery; | 206 | mode_sw = nvgpu_nvlink_link_rcvy_ac; |
207 | break; | ||
208 | case NVLINK_LINK_RCVY_SW: | ||
209 | mode_sw = nvgpu_nvlink_link_rcvy_sw; | ||
210 | break; | ||
211 | case NVLINK_LINK_RCVY_RX: | ||
212 | mode_sw = nvgpu_nvlink_link_rcvy_rx; | ||
203 | break; | 213 | break; |
204 | case NVLINK_LINK_DETECT: | 214 | case NVLINK_LINK_DETECT: |
205 | mode_sw = nvgpu_nvlink_link_detect; | 215 | mode_sw = nvgpu_nvlink_link_detect; |
diff --git a/drivers/gpu/nvgpu/gv100/nvlink_gv100.c b/drivers/gpu/nvgpu/gv100/nvlink_gv100.c index d27239ae..b3e25c21 100644 --- a/drivers/gpu/nvgpu/gv100/nvlink_gv100.c +++ b/drivers/gpu/nvgpu/gv100/nvlink_gv100.c | |||
@@ -2239,10 +2239,12 @@ u32 gv100_nvlink_link_get_mode(struct gk20a *g, u32 link_id) | |||
2239 | return nvgpu_nvlink_link_hs; | 2239 | return nvgpu_nvlink_link_hs; |
2240 | if (state == nvl_link_state_state_fault_v()) | 2240 | if (state == nvl_link_state_state_fault_v()) |
2241 | return nvgpu_nvlink_link_fault; | 2241 | return nvgpu_nvlink_link_fault; |
2242 | if ((state == nvl_link_state_state_rcvy_ac_v()) || | 2242 | if (state == nvl_link_state_state_rcvy_ac_v()) |
2243 | (state == nvl_link_state_state_rcvy_sw_v()) || | 2243 | return nvgpu_nvlink_link_rcvy_ac; |
2244 | (state == nvl_link_state_state_rcvy_rx_v())) | 2244 | if (state == nvl_link_state_state_rcvy_sw_v()) |
2245 | return nvgpu_nvlink_link_recovery; | 2245 | return nvgpu_nvlink_link_rcvy_sw; |
2246 | if (state == nvl_link_state_state_rcvy_rx_v()) | ||
2247 | return nvgpu_nvlink_link_rcvy_rx; | ||
2246 | 2248 | ||
2247 | return nvgpu_nvlink_link_off; | 2249 | return nvgpu_nvlink_link_off; |
2248 | } | 2250 | } |
diff --git a/drivers/gpu/nvgpu/include/nvgpu/nvlink.h b/drivers/gpu/nvgpu/include/nvgpu/nvlink.h index 7b8be7d8..0ef8a2f5 100644 --- a/drivers/gpu/nvgpu/include/nvgpu/nvlink.h +++ b/drivers/gpu/nvgpu/include/nvgpu/nvlink.h | |||
@@ -59,7 +59,9 @@ enum nvgpu_nvlink_link_mode { | |||
59 | nvgpu_nvlink_link_hs, | 59 | nvgpu_nvlink_link_hs, |
60 | nvgpu_nvlink_link_safe, | 60 | nvgpu_nvlink_link_safe, |
61 | nvgpu_nvlink_link_fault, | 61 | nvgpu_nvlink_link_fault, |
62 | nvgpu_nvlink_link_recovery, | 62 | nvgpu_nvlink_link_rcvy_ac, |
63 | nvgpu_nvlink_link_rcvy_sw, | ||
64 | nvgpu_nvlink_link_rcvy_rx, | ||
63 | nvgpu_nvlink_link_detect, | 65 | nvgpu_nvlink_link_detect, |
64 | nvgpu_nvlink_link_reset, | 66 | nvgpu_nvlink_link_reset, |
65 | nvgpu_nvlink_link_enable_pm, | 67 | nvgpu_nvlink_link_enable_pm, |