diff options
Diffstat (limited to 'meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/1455-drm-amdgpu-Restore-queues-after-VMPT-update-fences-s.patch')
-rw-r--r-- | meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/1455-drm-amdgpu-Restore-queues-after-VMPT-update-fences-s.patch | 73 |
1 files changed, 0 insertions, 73 deletions
diff --git a/meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/1455-drm-amdgpu-Restore-queues-after-VMPT-update-fences-s.patch b/meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/1455-drm-amdgpu-Restore-queues-after-VMPT-update-fences-s.patch deleted file mode 100644 index f5202a7f..00000000 --- a/meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/1455-drm-amdgpu-Restore-queues-after-VMPT-update-fences-s.patch +++ /dev/null @@ -1,73 +0,0 @@ -From 979866b47262abccb19397d7bcedb1a5dfce9d86 Mon Sep 17 00:00:00 2001 -From: Felix Kuehling <Felix.Kuehling@amd.com> -Date: Tue, 21 Jun 2016 09:41:04 -0400 -Subject: [PATCH 1455/4131] drm/amdgpu: Restore queues after VMPT update fences - signalled - -unreserve_bo_and_vms waits for the BO fences to signal. -kgd2kfd->restore_mm must be called after that to make sure the -queues don't get restarted before the page table update is -complete. - -This fixes intermittent VM faults after userptr evictions seen -without the HW scheduler. - -Change-Id: I0aa7dab32828f759e35f33da6fce8c38ccc5fee7 -Signed-off-by: Felix Kuehling <Felix.Kuehling@amd.com> ---- - drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c | 25 ++++++++++++++++-------- - 1 file changed, 17 insertions(+), 8 deletions(-) - -diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c -index f80206e5..72d1256 100644 ---- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c -+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c -@@ -1613,7 +1613,7 @@ int amdgpu_amdkfd_gpuvm_restore_mem(struct kgd_mem *mem, struct mm_struct *mm) - - if (unlikely(!have_pages)) { - entry->is_mapped = false; -- goto resume_kfd; -+ continue; - } - - r = map_bo_to_gpuvm(adev, mem->data2.bo, entry->bo_va, domain); -@@ -1623,11 +1623,23 @@ int amdgpu_amdkfd_gpuvm_restore_mem(struct kgd_mem *mem, struct mm_struct *mm) - if (ret == 0) - ret = r; - } -+ } -+ -+ if (have_pages) -+ unreserve_bo_and_vms(&ctx, true); -+ -+ /* Resume queues after unreserving the BOs and most -+ * importantly, waiting for the BO fences to guarantee that -+ * the page table updates have completed. -+ */ -+ list_for_each_entry(entry, &mem->data2.bo_va_list, bo_list) { -+ struct amdgpu_device *adev; -+ -+ if (!entry->is_mapped) -+ continue; -+ -+ adev = (struct amdgpu_device *)entry->kgd_dev; - -- /* Resume queues even if restore failed. Worst case -- * the app will get a GPUVM fault. That's better than -- * hanging the queues indefinitely. */ --resume_kfd: - r = kgd2kfd->resume_mm(adev->kfd, mm); - if (ret != 0) { - pr_err("Failed to resume KFD\n"); -@@ -1636,8 +1648,5 @@ int amdgpu_amdkfd_gpuvm_restore_mem(struct kgd_mem *mem, struct mm_struct *mm) - } - } - -- if (have_pages) -- unreserve_bo_and_vms(&ctx, true); -- - return ret; - } --- -2.7.4 - |