On Thu, Feb 15, 2024 at 09:38:42AM +1100, Alistair Popple wrote: > > +++ 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(). I think we should stop passing pfns into migrate_device_unmap(). Passing an array of folios would make more sense to every function involved, afaict. Maybe I overlooked something ... Also, have you had any thoughts on whether device memory is a type of folio like anon/file memory, or is it its own type?