aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/linux-yocto-4.19.8/0851-drm-amdgpu-Avoid-endless-loop-in-GPUVM-fragment-proc.patch
diff options
context:
space:
mode:
Diffstat (limited to 'common/recipes-kernel/linux/linux-yocto-4.19.8/0851-drm-amdgpu-Avoid-endless-loop-in-GPUVM-fragment-proc.patch')
-rw-r--r--common/recipes-kernel/linux/linux-yocto-4.19.8/0851-drm-amdgpu-Avoid-endless-loop-in-GPUVM-fragment-proc.patch42
1 files changed, 42 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/linux-yocto-4.19.8/0851-drm-amdgpu-Avoid-endless-loop-in-GPUVM-fragment-proc.patch b/common/recipes-kernel/linux/linux-yocto-4.19.8/0851-drm-amdgpu-Avoid-endless-loop-in-GPUVM-fragment-proc.patch
new file mode 100644
index 00000000..ae550b43
--- /dev/null
+++ b/common/recipes-kernel/linux/linux-yocto-4.19.8/0851-drm-amdgpu-Avoid-endless-loop-in-GPUVM-fragment-proc.patch
@@ -0,0 +1,42 @@
+From f472011cb783db8067c28fb0faa5773a10104744 Mon Sep 17 00:00:00 2001
+From: Felix Kuehling <Felix.Kuehling@amd.com>
+Date: Sat, 24 Nov 2018 23:25:04 -0500
+Subject: [PATCH 0851/2940] drm/amdgpu: Avoid endless loop in GPUVM fragment
+ processing
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Don't bounce back to the root level for fragment processing, because
+huge pages are not supported at that level. This is unlikely to happen
+with the default VM size on Vega, but can be exposed by limiting the
+VM size with the amdgpu.vm_size module parameter.
+
+Signed-off-by: Felix Kuehling <Felix.Kuehling@amd.com>
+Reviewed-by: Christian König <christian.koenig@amd.com>
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+---
+ drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | 6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
+index 5141c359cc18..3021e097a10b 100644
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
+@@ -1648,9 +1648,11 @@ static int amdgpu_vm_update_ptes(struct amdgpu_pte_update_params *params,
+ if (!amdgpu_vm_pt_descendant(adev, &cursor))
+ return -ENOENT;
+ continue;
+- } else if (frag >= parent_shift) {
++ } else if (frag >= parent_shift &&
++ cursor.level - 1 != adev->vm_manager.root_level) {
+ /* If the fragment size is even larger than the parent
+- * shift we should go up one level and check it again.
++ * shift we should go up one level and check it again
++ * unless one level up is the root level.
+ */
+ if (!amdgpu_vm_pt_ancestor(&cursor))
+ return -ENOENT;
+--
+2.17.1
+