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