diff options
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.patch | 58 |
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 + |