diff mbox series

[41/44] drm/amdkfd: Remove broken deferred mapping

Message ID 20210322105900.14068-42-Felix.Kuehling@amd.com (mailing list archive)
State New, archived
Headers show
Series Add HMM-based SVM memory manager to KFD v2 | expand

Commit Message

Felix Kuehling March 22, 2021, 10:58 a.m. UTC
Mapping without validation is broken. Also removed saving the pages from
the last migration. They may be invalidated without an MMU notifier to
catch it, so let the next proper validation take care of it.

Signed-off-by: Felix Kuehling <Felix.Kuehling@amd.com>
---
 drivers/gpu/drm/amd/amdkfd/kfd_migrate.c | 14 --------------
 drivers/gpu/drm/amd/amdkfd/kfd_svm.c     | 13 ++-----------
 2 files changed, 2 insertions(+), 25 deletions(-)
diff mbox series

Patch

diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_migrate.c b/drivers/gpu/drm/amd/amdkfd/kfd_migrate.c
index 101d1f71db84..6748c5db64f5 100644
--- a/drivers/gpu/drm/amd/amdkfd/kfd_migrate.c
+++ b/drivers/gpu/drm/amd/amdkfd/kfd_migrate.c
@@ -539,18 +539,6 @@  svm_migrate_copy_to_ram(struct amdgpu_device *adev, struct svm_range *prange,
 	src = (uint64_t *)(scratch + npages);
 	dst = scratch;
 
-	/* FIXME: Is it legal to hold on to this page array? We don't have
-	 * proper references to the pages and we may not have an MMU notifier
-	 * set up for the range at this point that could invalidate it (if
-	 * it's a child range).
-	 */
-	prange->pages_addr = kvmalloc_array(npages, sizeof(*prange->pages_addr),
-					    GFP_KERNEL | __GFP_ZERO);
-	if (!prange->pages_addr) {
-		r = -ENOMEM;
-		goto out_oom;
-	}
-
 	for (i = 0, j = 0; i < npages; i++, j++, addr += PAGE_SIZE) {
 		struct page *spage;
 
@@ -590,8 +578,6 @@  svm_migrate_copy_to_ram(struct amdgpu_device *adev, struct svm_range *prange,
 		pr_debug("dma mapping dst to 0x%llx, page_to_pfn 0x%lx\n",
 			      dst[i] >> PAGE_SHIFT, page_to_pfn(dpage));
 
-		prange->pages_addr[i] = page_to_pfn(dpage);
-
 		migrate->dst[i] = migrate_pfn(page_to_pfn(dpage));
 		migrate->dst[i] |= MIGRATE_PFN_LOCKED;
 	}
diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_svm.c b/drivers/gpu/drm/amd/amdkfd/kfd_svm.c
index 081d6bb75b09..aedb2c84131e 100644
--- a/drivers/gpu/drm/amd/amdkfd/kfd_svm.c
+++ b/drivers/gpu/drm/amd/amdkfd/kfd_svm.c
@@ -1695,7 +1695,6 @@  static void
 svm_range_handle_list_op(struct svm_range_list *svms, struct svm_range *prange)
 {
 	struct mm_struct *mm = prange->work_item.mm;
-	int r;
 
 	switch (prange->work_item.op) {
 	case SVM_OP_NULL:
@@ -1718,11 +1717,7 @@  svm_range_handle_list_op(struct svm_range_list *svms, struct svm_range *prange)
 		pr_debug("update and map 0x%p prange 0x%p [0x%lx 0x%lx]\n",
 			 svms, prange, prange->start, prange->last);
 		svm_range_update_notifier_and_interval_tree(mm, prange);
-		/* FIXME: need to validate somewhere */
-		r = svm_range_map_to_gpus(prange, true);
-		if (r)
-			pr_debug("failed %d map 0x%p [0x%lx 0x%lx]\n",
-				 r, svms, prange->start, prange->last);
+		/* TODO: implement deferred validation and mapping */
 		break;
 	case SVM_OP_ADD_RANGE:
 		pr_debug("add 0x%p prange 0x%p [0x%lx 0x%lx]\n", svms, prange,
@@ -1735,11 +1730,7 @@  svm_range_handle_list_op(struct svm_range_list *svms, struct svm_range *prange)
 			 prange, prange->start, prange->last);
 		svm_range_add_to_svms(prange);
 		svm_range_add_notifier_locked(mm, prange);
-		/* FIXME: need to validate somewhere */
-		r = svm_range_map_to_gpus(prange, true);
-		if (r)
-			pr_debug("failed %d map 0x%p [0x%lx 0x%lx]\n",
-				 r, svms, prange->start, prange->last);
+		/* TODO: implement deferred validation and mapping */
 		break;
 	default:
 		WARN_ONCE(1, "Unknown prange 0x%p work op %d\n", prange,