aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/linux-yocto-4.19.8/2116-drm-amdgpu-Do-error-injection-even-vram-reserve-fail.patch
blob: af9e95f6ebd7632c6eef71ea39860850f42b823f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
From 85d2a6d3f5169ac71bbb3734ea327f426e6a2435 Mon Sep 17 00:00:00 2001
From: xinhui pan <xinhui.pan@amd.com>
Date: Fri, 14 Jun 2019 16:06:10 +0800
Subject: [PATCH 2116/2940] drm/amdgpu: Do error injection even vram reserve
 fails

As long as the address is mapped with vram, we can do an error
injection.

Signed-off-by: xinhui pan <xinhui.pan@amd.com>
Acked-by: Alex Deucher <alexander.deucher@amd.com>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c | 13 +++++++------
 1 file changed, 7 insertions(+), 6 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c
index 7efc4e07665d..614116c7036a 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c
@@ -333,12 +333,13 @@ static ssize_t amdgpu_ras_debugfs_ctrl_write(struct file *f, const char __user *
 	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);
+		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);
 		ret = amdgpu_ras_error_inject(adev, &data.inject);
 		amdgpu_ras_release_vram(adev, &bo);
 		break;
-- 
2.17.1