aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/1911-drm-amdgpu-Issue-ras-TA-disable-enable-cmd-forcely-o.patch
diff options
context:
space:
mode:
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.patch75
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
+