aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3214-drm-amdgpu-remove-ras_reserve_vram-in-ras-injection.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3214-drm-amdgpu-remove-ras_reserve_vram-in-ras-injection.patch')
-rw-r--r--meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3214-drm-amdgpu-remove-ras_reserve_vram-in-ras-injection.patch65
1 files changed, 65 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3214-drm-amdgpu-remove-ras_reserve_vram-in-ras-injection.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3214-drm-amdgpu-remove-ras_reserve_vram-in-ras-injection.patch
new file mode 100644
index 00000000..ac12913c
--- /dev/null
+++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3214-drm-amdgpu-remove-ras_reserve_vram-in-ras-injection.patch
@@ -0,0 +1,65 @@
+From cefbcc894b7ae40b12dd6a0b6ad943ac8238344d Mon Sep 17 00:00:00 2001
+From: Tao Zhou <tao.zhou1@amd.com>
+Date: Wed, 24 Jul 2019 11:19:56 +0800
+Subject: [PATCH 3214/4256] drm/amdgpu: remove ras_reserve_vram in ras
+ injection
+
+error injection address is not in gpu address space
+
+Signed-off-by: Tao Zhou <tao.zhou1@amd.com>
+Reviewed-by: Dennis Li <dennis.li@amd.com>
+Reviewed-by: Hawking Zhang <Hawking.Zhang@amd.com>
+---
+ drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c | 21 ++++++++++-----------
+ 1 file changed, 10 insertions(+), 11 deletions(-)
+
+diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c
+index a87deb7be414..ccd5863bca88 100644
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c
+@@ -60,6 +60,9 @@ const char *ras_block_string[] = {
+ #define AMDGPU_RAS_FLAG_INIT_NEED_RESET 2
+ #define RAS_DEFAULT_FLAGS (AMDGPU_RAS_FLAG_INIT_BY_VBIOS)
+
++/* inject address is 52 bits */
++#define RAS_UMC_INJECT_ADDR_LIMIT (0x1ULL << 52)
++
+ static int amdgpu_ras_reserve_vram(struct amdgpu_device *adev,
+ uint64_t offset, uint64_t size,
+ struct amdgpu_bo **bo_ptr);
+@@ -245,7 +248,6 @@ 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);
+@@ -263,17 +265,14 @@ 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);
+- if (ret) {
+- /* address was offset, now it is absolute.*/
+- data.inject.address += adev->gmc.vram_start;
+- if (data.inject.address > adev->gmc.vram_end)
+- break;
+- } else
+- data.inject.address = amdgpu_bo_gpu_offset(bo);
++ if ((data.inject.address >= adev->gmc.mc_vram_size) ||
++ (data.inject.address >= RAS_UMC_INJECT_ADDR_LIMIT)) {
++ ret = -EINVAL;
++ break;
++ }
++
++ /* data.inject.address is offset instead of absolute gpu address */
+ ret = amdgpu_ras_error_inject(adev, &data.inject);
+- amdgpu_ras_release_vram(adev, &bo);
+ break;
+ default:
+ ret = -EINVAL;
+--
+2.17.1
+