Re: [PATCH v1 03/14] mm: add iomem vma selection for memory migration
From: Felix Kuehling <felix.kuehling@amd.com>
Date: 2021-08-25 14:24:12
Also in:
amd-gfx, dri-devel, linux-mm, linux-xfs
Am 2021-08-24 um 11:48 p.m. schrieb Alex Sierra:
quoted hunk ↗ jump to hunk
In this case, this is used to migrate pages from device memory, back to system memory. This particular device memory type should be accessible by the CPU, through IOMEM access. Typically, zone device public type memory falls into this category. Signed-off-by: Alex Sierra <redacted> --- include/linux/migrate.h | 1 + mm/migrate.c | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-)diff --git a/include/linux/migrate.h b/include/linux/migrate.h index 4bb4e519e3f5..6b16f417384f 100644 --- a/include/linux/migrate.h +++ b/include/linux/migrate.h@@ -156,6 +156,7 @@ static inline unsigned long migrate_pfn(unsigned long pfn) enum migrate_vma_direction { MIGRATE_VMA_SELECT_SYSTEM = 1 << 0, MIGRATE_VMA_SELECT_DEVICE_PRIVATE = 1 << 1, + MIGRATE_VMA_SELECT_IOMEM = 1 << 2,
How about calling this MIGRATE_VMA_SELECT_DEVICE_PUBLIC?
quoted hunk ↗ jump to hunk
}; struct migrate_vma {diff --git a/mm/migrate.c b/mm/migrate.c index e3a10e2a1bb3..d4ae2da99607 100644 --- a/mm/migrate.c +++ b/mm/migrate.c@@ -2406,7 +2406,8 @@ static int migrate_vma_collect_pmd(pmd_t *pmdp, if (is_write_device_private_entry(entry)) mpfn |= MIGRATE_PFN_WRITE; } else { - if (!(migrate->flags & MIGRATE_VMA_SELECT_SYSTEM)) + if (!(migrate->flags & MIGRATE_VMA_SELECT_SYSTEM) && + !(migrate->flags & MIGRATE_VMA_SELECT_IOMEM)) goto next;
For MIGRATE_VMA_SELECT_IOMEM/DEVICE_PUBLIC, I think we should ensure the pages are ZONE_DEVICE and we should also check the page owner for symmetry with DEVICE_PRIVATE. Regards, Felix
pfn = pte_pfn(pte);
if (is_zero_pfn(pfn)) {