mpenttil@xxxxxxxxxx writes: > From: Mika Penttilä <mpenttil@xxxxxxxxxx> > > Migrating file pages and swapcache pages into device memory is not supported. > The decision is done based on page_mapping(). For now, swapcache pages are not migrated. > > Things can however be improved, for swapcache pages. Try to get rid of the swap cache, > and if successful, go ahead as with other anonymous pages. > > Cc: Alistair Popple <apopple@xxxxxxxxxx> > Cc: John Hubbard <jhubbard@xxxxxxxxxx> > Cc: Ralph Campbell <rcampbell@xxxxxxxxxx> > Cc: Huang Ying <ying.huang@xxxxxxxxx> > Signed-off-by: Mika Penttilä <mpenttil@xxxxxxxxxx> > --- > > v2: > - use folio_test_anon() (Huang, Ying) > > > mm/migrate_device.c | 24 ++++++++++++++++++------ > 1 file changed, 18 insertions(+), 6 deletions(-) > > diff --git a/mm/migrate_device.c b/mm/migrate_device.c > index d30c9de60b0d..829bbc526758 100644 > --- a/mm/migrate_device.c > +++ b/mm/migrate_device.c > @@ -747,13 +747,25 @@ static void __migrate_device_pages(unsigned long *src_pfns, > > if (is_device_private_page(newpage) || > is_device_coherent_page(newpage)) { > - /* > - * For now only support anonymous memory migrating to > - * device private or coherent memory. > - */ > + > if (mapping) { > - src_pfns[i] &= ~MIGRATE_PFN_MIGRATE; > - continue; > + struct folio *folio; > + > + folio = page_folio(page); > + > + /* > + * For now only support anonymous memory migrating to > + * device private or coherent memory. > + * > + * Try to get rid of swap cache if possible. I think we can delete the following 2 lines of comments. They add nothing except what code says already. Otherwise looks good to me. Reviewed-by: "Huang, Ying" <ying.huang@xxxxxxxxx> > + * page is here file or swapcache page, could be shmem also > + * folio_test_anon() filters out file and shmem > + * > + */ > + if (!folio_test_anon(folio) || !folio_free_swap(folio)) { > + src_pfns[i] &= ~MIGRATE_PFN_MIGRATE; > + continue; > + } > } > } else if (is_zone_device_page(newpage)) { > /*