aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/2005-drm-amdgpu-ras-injection-use-gpu-address.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/2005-drm-amdgpu-ras-injection-use-gpu-address.patch')
-rw-r--r--meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/2005-drm-amdgpu-ras-injection-use-gpu-address.patch58
1 files changed, 58 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/2005-drm-amdgpu-ras-injection-use-gpu-address.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/2005-drm-amdgpu-ras-injection-use-gpu-address.patch
new file mode 100644
index 00000000..e9a093a9
--- /dev/null
+++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/2005-drm-amdgpu-ras-injection-use-gpu-address.patch
@@ -0,0 +1,58 @@
+From d20a1f27a2fb5d457eab65a6642b586f99ba8347 Mon Sep 17 00:00:00 2001
+From: xinhui pan <xinhui.pan@amd.com>
+Date: Tue, 28 May 2019 14:47:31 +0800
+Subject: [PATCH 2005/2940] drm/amdgpu: ras injection use gpu address
+
+injection need a valid gpu address.
+
+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 | 16 ++++++++++++++++
+ 1 file changed, 16 insertions(+)
+
+diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c
+index 7c8a4aedf07c..011630f62f85 100644
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c
+@@ -128,6 +128,12 @@ const char *ras_block_string[] = {
+ #define AMDGPU_RAS_FLAG_INIT_NEED_RESET 2
+ #define RAS_DEFAULT_FLAGS (AMDGPU_RAS_FLAG_INIT_BY_VBIOS)
+
++static int amdgpu_ras_reserve_vram(struct amdgpu_device *adev,
++ uint64_t offset, uint64_t size,
++ struct amdgpu_bo **bo_ptr);
++static int amdgpu_ras_release_vram(struct amdgpu_device *adev,
++ struct amdgpu_bo **bo_ptr);
++
+ static void amdgpu_ras_self_test(struct amdgpu_device *adev)
+ {
+ /* TODO */
+@@ -307,6 +313,7 @@ static ssize_t amdgpu_ras_debugfs_ctrl_write(struct file *f, const char __user *
+ {
+ struct amdgpu_device *adev = (struct amdgpu_device *)file_inode(f)->i_private;
+ struct ras_debug_if data;
++ struct amdgpu_bo *bo;
+ int ret = 0;
+
+ ret = amdgpu_ras_debugfs_ctrl_parse_data(f, buf, size, pos, &data);
+@@ -324,7 +331,16 @@ static ssize_t amdgpu_ras_debugfs_ctrl_write(struct file *f, const char __user *
+ ret = amdgpu_ras_feature_enable(adev, &data.head, 1);
+ break;
+ case 2:
++ ret = amdgpu_ras_reserve_vram(adev,
++ data.inject.address, PAGE_SIZE, &bo);
++ /* This address might be used already on failure. In fact we can
++ * perform an injection in such case.
++ */
++ if (ret)
++ break;
++ data.inject.address = amdgpu_bo_gpu_offset(bo);
+ ret = amdgpu_ras_error_inject(adev, &data.inject);
++ amdgpu_ras_release_vram(adev, &bo);
+ break;
+ default:
+ ret = -EINVAL;
+--
+2.17.1
+