On 05/31/2016 05:31 AM, Minchan Kim wrote: > @@ -791,6 +921,7 @@ static int __unmap_and_move(struct page *page, struct page *newpage, > int rc = -EAGAIN; > int page_was_mapped = 0; > struct anon_vma *anon_vma = NULL; > + bool is_lru = !__PageMovable(page); > > if (!trylock_page(page)) { > if (!force || mode == MIGRATE_ASYNC) > @@ -871,6 +1002,11 @@ static int __unmap_and_move(struct page *page, struct page *newpage, > goto out_unlock_both; > } > > + if (unlikely(!is_lru)) { > + rc = move_to_new_page(newpage, page, mode); > + goto out_unlock_both; > + } > + Hello Minchan, I might be missing something here but does this implementation support the scenario where these non LRU pages owned by the driver mapped as PTE into process page table ? Because the "goto out_unlock_both" statement above skips all the PTE unmap, putting a migration PTE and removing the migration PTE steps. Regards Anshuman _______________________________________________ Virtualization mailing list Virtualization@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linuxfoundation.org/mailman/listinfo/virtualization