diff options
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3960-drm-ttm-Restore-ttm-prefaulting.patch')
-rw-r--r-- | meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3960-drm-ttm-Restore-ttm-prefaulting.patch | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3960-drm-ttm-Restore-ttm-prefaulting.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3960-drm-ttm-Restore-ttm-prefaulting.patch new file mode 100644 index 00000000..f347067a --- /dev/null +++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3960-drm-ttm-Restore-ttm-prefaulting.patch @@ -0,0 +1,56 @@ +From 45d7aafd61f363dce97c72991ffde801dfa72374 Mon Sep 17 00:00:00 2001 +From: Thomas Hellstrom <thellstrom@vmware.com> +Date: Thu, 12 Sep 2019 20:38:54 +0200 +Subject: [PATCH 3960/4256] drm/ttm: Restore ttm prefaulting +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Commit 4daa4fba3a38 ("gpu: drm: ttm: Adding new return type vm_fault_t") +broke TTM prefaulting. Since vmf_insert_mixed() typically always returns +VM_FAULT_NOPAGE, prefaulting stops after the second PTE. + +Restore (almost) the original behaviour. Unfortunately we can no longer +with the new vm_fault_t return type determine whether a prefaulting +PTE insertion hit an already populated PTE, and terminate the insertion +loop. Instead we continue with the pre-determined number of prefaults. + +Fixes: 4daa4fba3a38 ("gpu: drm: ttm: Adding new return type vm_fault_t") +Cc: Souptick Joarder <jrdr.linux@gmail.com> +Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com> +Reviewed-by: Christian König <christian.koenig@amd.com> +Cc: stable@vger.kernel.org # v4.19+ +--- + drivers/gpu/drm/ttm/ttm_bo_vm.c | 16 +++++++--------- + 1 file changed, 7 insertions(+), 9 deletions(-) + +diff --git a/drivers/gpu/drm/ttm/ttm_bo_vm.c b/drivers/gpu/drm/ttm/ttm_bo_vm.c +index f1114a6e6b1e..41ae5200ac5c 100644 +--- a/drivers/gpu/drm/ttm/ttm_bo_vm.c ++++ b/drivers/gpu/drm/ttm/ttm_bo_vm.c +@@ -273,15 +273,13 @@ static vm_fault_t ttm_bo_vm_fault(struct vm_fault *vmf) + else + ret = vmf_insert_pfn(&cvma, address, pfn); + +- /* +- * Somebody beat us to this PTE or prefaulting to +- * an already populated PTE, or prefaulting error. +- */ +- +- if (unlikely((ret == VM_FAULT_NOPAGE && i > 0))) +- break; +- else if (unlikely(ret & VM_FAULT_ERROR)) +- goto out_io_unlock; ++ /* Never error on prefaulted PTEs */ ++ if (unlikely((ret & VM_FAULT_ERROR))) { ++ if (i == 0) ++ goto out_io_unlock; ++ else ++ break; ++ } + + address += PAGE_SIZE; + if (unlikely(++page_offset >= page_last)) +-- +2.17.1 + |