Sidhartha Kumar <sidhartha.kumar@xxxxxxxxxx> writes: > migrate_device_unmap() already has a folio, we can use the folio > versions of is_zone_device_page() and putback_lru_page. > > Signed-off-by: Sidhartha Kumar <sidhartha.kumar@xxxxxxxxxx> > --- > mm/migrate_device.c | 18 +++++++++--------- > 1 file changed, 9 insertions(+), 9 deletions(-) > > diff --git a/mm/migrate_device.c b/mm/migrate_device.c > index b6c27c76e1a0b..9152a329b0a68 100644 > --- a/mm/migrate_device.c > +++ b/mm/migrate_device.c > @@ -377,33 +377,33 @@ static unsigned long migrate_device_unmap(unsigned long *src_pfns, > continue; > } > > + folio = page_folio(page); Instead of open coding the migrate pfn to folio conversion I think we should define a migrate_pfn_to_folio() and get rid of the intermediate local variable. This would also allow a minor clean up to the final for loop in migrate_device_unmap(). > /* ZONE_DEVICE pages are not on LRU */ > - if (!is_zone_device_page(page)) { > - if (!PageLRU(page) && allow_drain) { > + if (!folio_is_zone_device(folio)) { > + if (!folio_test_lru(folio) && allow_drain) { > /* Drain CPU's lru cache */ > lru_add_drain_all(); > allow_drain = false; > } > > - if (!isolate_lru_page(page)) { > + if (!folio_isolate_lru(folio)) { > src_pfns[i] &= ~MIGRATE_PFN_MIGRATE; > restore++; > continue; > } > > /* Drop the reference we took in collect */ > - put_page(page); > + folio_put(folio); > } > > - folio = page_folio(page); > if (folio_mapped(folio)) > try_to_migrate(folio, 0); > > - if (page_mapped(page) || > + if (folio_mapped(folio) || > !migrate_vma_check_page(page, fault_page)) { > - if (!is_zone_device_page(page)) { > - get_page(page); > - putback_lru_page(page); > + if (!folio_is_zone_device(folio)) { > + folio_get(folio); > + folio_putback_lru(folio); > } > > src_pfns[i] &= ~MIGRATE_PFN_MIGRATE;