diff options
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/1911-drm-amdgpu-Issue-ras-TA-disable-enable-cmd-forcely-o.patch')
-rw-r--r-- | meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/1911-drm-amdgpu-Issue-ras-TA-disable-enable-cmd-forcely-o.patch | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/1911-drm-amdgpu-Issue-ras-TA-disable-enable-cmd-forcely-o.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/1911-drm-amdgpu-Issue-ras-TA-disable-enable-cmd-forcely-o.patch new file mode 100644 index 00000000..300cf315 --- /dev/null +++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/1911-drm-amdgpu-Issue-ras-TA-disable-enable-cmd-forcely-o.patch @@ -0,0 +1,75 @@ +From 4fca127ba1ea7cd7e21beea44f7defd3a8f05784 Mon Sep 17 00:00:00 2001 +From: xinhui pan <xinhui.pan@amd.com> +Date: Wed, 8 May 2019 16:13:03 +0800 +Subject: [PATCH 1911/2940] drm/amdgpu: Issue ras TA disable/enable cmd forcely + on boot + +Check ras TA error code and return EAGAIN. +Issue ras enable/disable cmd without checking currect state. +Looks like ras TA will handle current state == target state case. + +Now driver might need do a reset to satisfy ras TA. + +Signed-off-by: xinhui pan <xinhui.pan@amd.com> +Reviewed-by: Alex Deucher <alexander.deucher@amd.com> +--- + drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c | 34 +++++++++++++++++++------ + 1 file changed, 26 insertions(+), 8 deletions(-) + +diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c +index 22bd21efe6b1..5f8e1163a75d 100644 +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c +@@ -521,6 +521,8 @@ int amdgpu_ras_feature_enable(struct amdgpu_device *adev, + enable ? "enable":"disable", + ras_block_str(head->block), + ret); ++ if (ret == TA_RAS_STATUS__RESET_NEEDED) ++ return -EAGAIN; + return -EINVAL; + } + +@@ -541,16 +543,32 @@ int amdgpu_ras_feature_enable_on_boot(struct amdgpu_device *adev, + return -EINVAL; + + if (con->flags & AMDGPU_RAS_FLAG_INIT_BY_VBIOS) { +- /* If ras is enabled by vbios, we set up ras object first in +- * both case. For enable, that is all what we need do. For +- * disable, we need perform a ras TA disable cmd after that. +- */ +- ret = __amdgpu_ras_feature_enable(adev, head, 1); +- if (ret) +- return ret; ++ if (enable) { ++ /* There is no harm to issue a ras TA cmd regardless of ++ * the currecnt ras state. ++ * If current state == target state, it will do nothing ++ * But sometimes it requests driver to reset and repost ++ * with error code -EAGAIN. ++ */ ++ ret = amdgpu_ras_feature_enable(adev, head, 1); ++ /* With old ras TA, we might fail to enable ras. ++ * Log it and just setup the object. ++ * TODO need remove this WA in the future. ++ */ ++ if (ret == -EINVAL) { ++ ret = __amdgpu_ras_feature_enable(adev, head, 1); ++ if (!ret) ++ DRM_INFO("RAS INFO: %s setup object\n", ++ ras_block_str(head->block)); ++ } ++ } else { ++ /* setup the object then issue a ras TA disable cmd.*/ ++ ret = __amdgpu_ras_feature_enable(adev, head, 1); ++ if (ret) ++ return ret; + +- if (!enable) + ret = amdgpu_ras_feature_enable(adev, head, 0); ++ } + } else + ret = amdgpu_ras_feature_enable(adev, head, enable); + +-- +2.17.1 + |