On 8/15/2021 10:38 AM, Christoph Hellwig wrote:
On Fri, Aug 13, 2021 at 01:31:42AM -0500, Alex Sierra wrote:
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_SYSTEM;
+ else
+ migrate.flags = MIGRATE_VMA_SELECT_DEVICE_PRIVATE;
It's been a while since I touched this migrate code, but doesn't this
mean that if the range already contains system memory the migration
now won't do anything? for the connected_to_cpu case?
For above’s condition equal to connected_to_cpu , we’re explicitly
migrating from
device memory to system memory with device generic type. In this type,
device PTEs are
present in CPU page table.
During migrate_vma_collect_pmd walk op at migrate_vma_setup call,
there’s a condition
for present pte that require migrate->flags be set for
MIGRATE_VMA_SELECT_SYSTEM.
Otherwise, the migration for this entry will be ignored.
Regards,
Alex S.