From 0e3181a5d710a4ef066c81ec9d699dbcb3d9c995 Mon Sep 17 00:00:00 2001 From: Adeel Raza Date: Sun, 11 Feb 2018 21:53:15 -0800 Subject: 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 Reviewed-on: https://git-master.nvidia.com/r/1698799 Reviewed-by: Automatic_Commit_Validation_User Reviewed-by: Tejal Kudav Reviewed-by: Petlozu Pravareshwar Tested-by: Petlozu Pravareshwar GVS: Gerrit_Virtual_Submit Reviewed-by: Vijayakumar Subbu Reviewed-by: mobile promotions Tested-by: mobile promotions --- drivers/gpu/nvgpu/common/linux/nvlink.c | 18 ++++++++++++++---- drivers/gpu/nvgpu/gv100/nvlink_gv100.c | 10 ++++++---- drivers/gpu/nvgpu/include/nvgpu/nvlink.h | 4 +++- 3 files changed, 23 insertions(+), 9 deletions(-) (limited to 'drivers/gpu') 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) return NVLINK_LINK_SAFE; case nvgpu_nvlink_link_fault: return NVLINK_LINK_FAULT; - case nvgpu_nvlink_link_recovery: - return NVLINK_LINK_RECOVERY; + case nvgpu_nvlink_link_rcvy_ac: + return NVLINK_LINK_RCVY_AC; + case nvgpu_nvlink_link_rcvy_sw: + return NVLINK_LINK_RCVY_SW; + case nvgpu_nvlink_link_rcvy_rx: + return NVLINK_LINK_RCVY_RX; case nvgpu_nvlink_link_detect: return NVLINK_LINK_DETECT; case nvgpu_nvlink_link_reset: @@ -198,8 +202,14 @@ static int nvgpu_nvlink_set_link_mode(struct nvlink_device *ndev, u32 mode) case NVLINK_LINK_FAULT: mode_sw = nvgpu_nvlink_link_fault; break; - case NVLINK_LINK_RECOVERY: - mode_sw = nvgpu_nvlink_link_recovery; + case NVLINK_LINK_RCVY_AC: + mode_sw = nvgpu_nvlink_link_rcvy_ac; + break; + case NVLINK_LINK_RCVY_SW: + mode_sw = nvgpu_nvlink_link_rcvy_sw; + break; + case NVLINK_LINK_RCVY_RX: + mode_sw = nvgpu_nvlink_link_rcvy_rx; break; case NVLINK_LINK_DETECT: 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) return nvgpu_nvlink_link_hs; if (state == nvl_link_state_state_fault_v()) return nvgpu_nvlink_link_fault; - if ((state == nvl_link_state_state_rcvy_ac_v()) || - (state == nvl_link_state_state_rcvy_sw_v()) || - (state == nvl_link_state_state_rcvy_rx_v())) - return nvgpu_nvlink_link_recovery; + if (state == nvl_link_state_state_rcvy_ac_v()) + return nvgpu_nvlink_link_rcvy_ac; + if (state == nvl_link_state_state_rcvy_sw_v()) + return nvgpu_nvlink_link_rcvy_sw; + if (state == nvl_link_state_state_rcvy_rx_v()) + return nvgpu_nvlink_link_rcvy_rx; return nvgpu_nvlink_link_off; } 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 { nvgpu_nvlink_link_hs, nvgpu_nvlink_link_safe, nvgpu_nvlink_link_fault, - nvgpu_nvlink_link_recovery, + nvgpu_nvlink_link_rcvy_ac, + nvgpu_nvlink_link_rcvy_sw, + nvgpu_nvlink_link_rcvy_rx, nvgpu_nvlink_link_detect, nvgpu_nvlink_link_reset, nvgpu_nvlink_link_enable_pm, -- cgit v1.2.2