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@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/virtualization

Reply via email to