Am 2021-04-28 um 9:53 p.m. schrieb Philip Yang: > If migration vma setup, but failed before start sdma memory copy, e.g. > process is killed, don't wait for sdma fence done. I think you could describe this more generally as "Handle errors returned by svm_migrate_copy_to_vram/ram". > > Signed-off-by: Philip Yang <Philip.Yang@xxxxxxx> > --- > drivers/gpu/drm/amd/amdkfd/kfd_migrate.c | 20 ++++++++++++-------- > 1 file changed, 12 insertions(+), 8 deletions(-) > > diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_migrate.c b/drivers/gpu/drm/amd/amdkfd/kfd_migrate.c > index 6b810863f6ba..19b08247ba8a 100644 > --- a/drivers/gpu/drm/amd/amdkfd/kfd_migrate.c > +++ b/drivers/gpu/drm/amd/amdkfd/kfd_migrate.c > @@ -460,10 +460,12 @@ svm_migrate_vma_to_vram(struct amdgpu_device *adev, struct svm_range *prange, > } > > if (migrate.cpages) { > - svm_migrate_copy_to_vram(adev, prange, &migrate, &mfence, > - scratch); > - migrate_vma_pages(&migrate); > - svm_migrate_copy_done(adev, mfence); > + r = svm_migrate_copy_to_vram(adev, prange, &migrate, &mfence, > + scratch); > + if (!r) { > + migrate_vma_pages(&migrate); > + svm_migrate_copy_done(adev, mfence); I think there are failure cases where svm_migrate_copy_to_vram successfully copies some pages but fails somewhere in the middle. I think in those cases you still want to call migrate_vma_pages and svm_migrate_copy_done. If the copy never started for some reason, there should be no mfence and svm_migrate_copy_done should be a no-op. I probably don't understand the failure scenario you encountered. Can you explain that in more detail? Thanks, Felix > + } > migrate_vma_finalize(&migrate); > } > > @@ -663,10 +665,12 @@ svm_migrate_vma_to_ram(struct amdgpu_device *adev, struct svm_range *prange, > pr_debug("cpages %ld\n", migrate.cpages); > > if (migrate.cpages) { > - svm_migrate_copy_to_ram(adev, prange, &migrate, &mfence, > - scratch); > - migrate_vma_pages(&migrate); > - svm_migrate_copy_done(adev, mfence); > + r = svm_migrate_copy_to_ram(adev, prange, &migrate, &mfence, > + scratch); > + if (!r) { > + migrate_vma_pages(&migrate); > + svm_migrate_copy_done(adev, mfence); > + } > migrate_vma_finalize(&migrate); > } else { > pr_debug("failed collect migrate device pages [0x%lx 0x%lx]\n", _______________________________________________ amd-gfx mailing list amd-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/amd-gfx