aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/linux-yocto-4.14.71/4491-drm-amdgpu-Avoid-invalidate-tlbs-when-gpu-is-on-rese.patch
diff options
context:
space:
mode:
Diffstat (limited to 'common/recipes-kernel/linux/linux-yocto-4.14.71/4491-drm-amdgpu-Avoid-invalidate-tlbs-when-gpu-is-on-rese.patch')
-rw-r--r--common/recipes-kernel/linux/linux-yocto-4.14.71/4491-drm-amdgpu-Avoid-invalidate-tlbs-when-gpu-is-on-rese.patch61
1 files changed, 61 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/linux-yocto-4.14.71/4491-drm-amdgpu-Avoid-invalidate-tlbs-when-gpu-is-on-rese.patch b/common/recipes-kernel/linux/linux-yocto-4.14.71/4491-drm-amdgpu-Avoid-invalidate-tlbs-when-gpu-is-on-rese.patch
new file mode 100644
index 00000000..2e56d37b
--- /dev/null
+++ b/common/recipes-kernel/linux/linux-yocto-4.14.71/4491-drm-amdgpu-Avoid-invalidate-tlbs-when-gpu-is-on-rese.patch
@@ -0,0 +1,61 @@
+From 1342dd9b236b14c296e97c37da02a60d18e153dd Mon Sep 17 00:00:00 2001
+From: Shaoyun Liu <Shaoyun.Liu@amd.com>
+Date: Tue, 8 May 2018 11:48:06 -0400
+Subject: [PATCH 4491/5725] drm/amdgpu: Avoid invalidate tlbs when gpu is on
+ reset
+
+Change-Id: Iff018a8b01c9015f2b1e1368d1b1d515e62af6d5
+Signed-off-by: Shaoyun Liu <Shaoyun.Liu@amd.com>
+---
+ drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v7.c | 3 +++
+ drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v8.c | 3 +++
+ drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c | 5 ++++-
+ 3 files changed, 10 insertions(+), 1 deletion(-)
+
+diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v7.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v7.c
+index b04471b..f833437 100644
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v7.c
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v7.c
+@@ -822,6 +822,9 @@ static int invalidate_tlbs(struct kgd_dev *kgd, uint16_t pasid)
+ int vmid;
+ unsigned int tmp;
+
++ if (adev->in_gpu_reset)
++ return -EIO;
++
+ for (vmid = 0; vmid < 16; vmid++) {
+ if (!amdgpu_amdkfd_is_kfd_vmid(adev, vmid))
+ continue;
+diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v8.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v8.c
+index d723ae2..0c7c248 100644
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v8.c
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v8.c
+@@ -791,6 +791,9 @@ static int invalidate_tlbs(struct kgd_dev *kgd, uint16_t pasid)
+ int vmid;
+ unsigned int tmp;
+
++ if (adev->in_gpu_reset)
++ return -EIO;
++
+ #ifdef V8_SUPPORT_IT_OFFICIAL
+ struct amdgpu_ring *ring = &adev->gfx.kiq.ring;
+
+diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c
+index a81e301..7af8ee6 100644
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c
+@@ -989,7 +989,10 @@ static int invalidate_tlbs(struct kgd_dev *kgd, uint16_t pasid)
+ int vmid;
+ struct amdgpu_ring *ring = &adev->gfx.kiq.ring;
+
+- if (ring->ready && (!adev->in_gpu_reset))
++ if (adev->in_gpu_reset)
++ return -EIO;
++
++ if (ring->ready)
+ return invalidate_tlbs_with_kiq(adev, pasid);
+
+ for (vmid = 0; vmid < 16; vmid++) {
+--
+2.7.4
+