Hi Marek,

On 03/05/2013 02:57 PM, Marek Szyprowski wrote:
> @@ -2495,7 +2498,7 @@ static inline void cow_user_page(struct page *dst, 
> struct page *src, unsigned lo
>   */
>  static int do_wp_page(struct mm_struct *mm, struct vm_area_struct *vma,
>               unsigned long address, pte_t *page_table, pmd_t *pmd,
> -             spinlock_t *ptl, pte_t orig_pte)
> +             spinlock_t *ptl, pte_t orig_pte, unsigned int flags)
>       __releases(ptl)
>  {
>       struct page *old_page, *new_page = NULL;
> @@ -2505,6 +2508,10 @@ static int do_wp_page(struct mm_struct *mm, struct 
> vm_area_struct *vma,
>       struct page *dirty_page = NULL;
>       unsigned long mmun_start = 0;   /* For mmu_notifiers */
>       unsigned long mmun_end = 0;     /* For mmu_notifiers */
> +     gfp_t gfp = GFP_HIGHUSER_MOVABLE;
> +
> +     if (IS_ENABLED(CONFIG_CMA) && (flags & FAULT_FLAG_NO_CMA))
> +             gfp &= ~__GFP_MOVABLE;

Here just simply strip the __GFP_MOVABLE flag, IIUC it will break the page 
migrate policy.  
Because " But GFP_MOVABLE is not only a zone specifier but also an allocation 
policy.".

Another problem is that you add a new flag to instruct the page allocation, 
do we have to also handle the hugepage or THP as Mel ever mentioned?
 
thanks,
linfeng
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to