@@ -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;
}
@@ -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,
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(-)