aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/linux-yocto-4.19.8/1511-drm-amdgpu-add-psp-v11-ras-callback.patch
diff options
context:
space:
mode:
Diffstat (limited to 'common/recipes-kernel/linux/linux-yocto-4.19.8/1511-drm-amdgpu-add-psp-v11-ras-callback.patch')
-rw-r--r--common/recipes-kernel/linux/linux-yocto-4.19.8/1511-drm-amdgpu-add-psp-v11-ras-callback.patch85
1 files changed, 85 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/linux-yocto-4.19.8/1511-drm-amdgpu-add-psp-v11-ras-callback.patch b/common/recipes-kernel/linux/linux-yocto-4.19.8/1511-drm-amdgpu-add-psp-v11-ras-callback.patch
new file mode 100644
index 00000000..abb538b8
--- /dev/null
+++ b/common/recipes-kernel/linux/linux-yocto-4.19.8/1511-drm-amdgpu-add-psp-v11-ras-callback.patch
@@ -0,0 +1,85 @@
+From 01333dc56f4cd56efd2542955c0d03bb796a99e5 Mon Sep 17 00:00:00 2001
+From: xinhui pan <xinhui.pan@amd.com>
+Date: Wed, 14 Nov 2018 18:06:33 +0800
+Subject: [PATCH 1511/2940] drm/amdgpu: add psp v11 ras callback
+
+Add trigger_error and cure_posion.
+
+Acked-by: Hawking Zhang <Hawking.Zhang@amd.com>
+Signed-off-by: xinhui pan <xinhui.pan@amd.com>
+Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
+---
+ drivers/gpu/drm/amd/amdgpu/psp_v11_0.c | 50 ++++++++++++++++++++++++++
+ 1 file changed, 50 insertions(+)
+
+diff --git a/drivers/gpu/drm/amd/amdgpu/psp_v11_0.c b/drivers/gpu/drm/amd/amdgpu/psp_v11_0.c
+index 0a94b0cef144..4ba93fa5c7af 100644
+--- a/drivers/gpu/drm/amd/amdgpu/psp_v11_0.c
++++ b/drivers/gpu/drm/amd/amdgpu/psp_v11_0.c
+@@ -696,6 +696,54 @@ static int psp_v11_0_xgmi_get_node_id(struct psp_context *psp, uint64_t *node_id
+ return 0;
+ }
+
++static int psp_v11_0_ras_trigger_error(struct psp_context *psp,
++ struct ta_ras_trigger_error_input *info)
++{
++ struct ta_ras_shared_memory *ras_cmd;
++ int ret;
++
++ if (!psp->ras.ras_initialized)
++ return -EINVAL;
++
++ ras_cmd = (struct ta_ras_shared_memory *)psp->ras.ras_shared_buf;
++ memset(ras_cmd, 0, sizeof(struct ta_ras_shared_memory));
++
++ ras_cmd->cmd_id = TA_RAS_COMMAND__TRIGGER_ERROR;
++ ras_cmd->ras_in_message.trigger_error = *info;
++
++ ret = psp_ras_invoke(psp, ras_cmd->cmd_id);
++ if (ret)
++ return -EINVAL;
++
++ return ras_cmd->ras_status;
++}
++
++static int psp_v11_0_ras_cure_posion(struct psp_context *psp, uint64_t *mode_ptr)
++{
++#if 0
++ // not support yet.
++ struct ta_ras_shared_memory *ras_cmd;
++ int ret;
++
++ if (!psp->ras.ras_initialized)
++ return -EINVAL;
++
++ ras_cmd = (struct ta_ras_shared_memory *)psp->ras.ras_shared_buf;
++ memset(ras_cmd, 0, sizeof(struct ta_ras_shared_memory));
++
++ ras_cmd->cmd_id = TA_RAS_COMMAND__CURE_POISON;
++ ras_cmd->ras_in_message.cure_poison.mode_ptr = mode_ptr;
++
++ ret = psp_ras_invoke(psp, ras_cmd->cmd_id);
++ if (ret)
++ return -EINVAL;
++
++ return ras_cmd->ras_status;
++#else
++ return -EINVAL;
++#endif
++}
++
+ static const struct psp_funcs psp_v11_0_funcs = {
+ .init_microcode = psp_v11_0_init_microcode,
+ .bootloader_load_sysdrv = psp_v11_0_bootloader_load_sysdrv,
+@@ -712,6 +760,8 @@ static const struct psp_funcs psp_v11_0_funcs = {
+ .xgmi_get_hive_id = psp_v11_0_xgmi_get_hive_id,
+ .xgmi_get_node_id = psp_v11_0_xgmi_get_node_id,
+ .support_vmr_ring = psp_v11_0_support_vmr_ring,
++ .ras_trigger_error = psp_v11_0_ras_trigger_error,
++ .ras_cure_posion = psp_v11_0_ras_cure_posion,
+ };
+
+ void psp_v11_0_set_psp_funcs(struct psp_context *psp)
+--
+2.17.1
+