Coherent device type memory on VRAM to RAM migration, has similar access
as System RAM from the CPU. This flag sets the source from the sender.
Which in Coherent type case, should be set as
MIGRATE_VMA_SELECT_DEVICE_COHERENT.

Signed-off-by: Alex Sierra <alex.sie...@amd.com>
Reviewed-by: Felix Kuehling <felix.kuehl...@amd.com>
---
 drivers/gpu/drm/amd/amdkfd/kfd_migrate.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_migrate.c 
b/drivers/gpu/drm/amd/amdkfd/kfd_migrate.c
index 5e8d944d359e..846ba55723fb 100644
--- a/drivers/gpu/drm/amd/amdkfd/kfd_migrate.c
+++ b/drivers/gpu/drm/amd/amdkfd/kfd_migrate.c
@@ -659,9 +659,12 @@ svm_migrate_vma_to_ram(struct amdgpu_device *adev, struct 
svm_range *prange,
        migrate.vma = vma;
        migrate.start = start;
        migrate.end = end;
-       migrate.flags = MIGRATE_VMA_SELECT_DEVICE_PRIVATE;
        migrate.pgmap_owner = SVM_ADEV_PGMAP_OWNER(adev);
 
+       if (adev->gmc.xgmi.connected_to_cpu)
+               migrate.flags = MIGRATE_VMA_SELECT_DEVICE_COHERENT;
+       else
+               migrate.flags = MIGRATE_VMA_SELECT_DEVICE_PRIVATE;
        size = 2 * sizeof(*migrate.src) + sizeof(uint64_t) + sizeof(dma_addr_t);
        size *= npages;
        buf = kvmalloc(size, GFP_KERNEL | __GFP_ZERO);
-- 
2.32.0

Reply via email to