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 9efc97d55077..4ec7ac13f2b7 100644
--- a/drivers/gpu/drm/amd/amdkfd/kfd_migrate.c
+++ b/drivers/gpu/drm/amd/amdkfd/kfd_migrate.c
@@ -617,9 +617,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