On Fri 12-04-19 11:26:59, Qian Cai wrote:
[...]
> diff --git a/mm/page_alloc.c b/mm/page_alloc.c
> index d96ca5bc555b..a9d2b0236167 100644
> --- a/mm/page_alloc.c
> +++ b/mm/page_alloc.c
> @@ -8005,7 +8005,10 @@ void *__init alloc_large_system_hash(const char 
> *tablename,
>  bool has_unmovable_pages(struct zone *zone, struct page *page, int count,
>                        int migratetype, int flags)
>  {
> -     unsigned long pfn, iter, found;
> +     unsigned long found;
> +     unsigned long iter = 0;
> +     unsigned long pfn = page_to_pfn(page);
> +     char reason[] = "unmovable page";

        const char *reason = "unovable page";
>  
>       /*
>        * TODO we could make this much more efficient by not checking every
> @@ -8015,17 +8018,20 @@ bool has_unmovable_pages(struct zone *zone, struct 
> page *page, int count,
>        * can still lead to having bootmem allocations in zone_movable.
>        */
>  
> -     /*
> -      * CMA allocations (alloc_contig_range) really need to mark isolate
> -      * CMA pageblocks even when they are not movable in fact so consider
> -      * them movable here.
> -      */
> -     if (is_migrate_cma(migratetype) &&
> -                     is_migrate_cma(get_pageblock_migratetype(page)))
> -             return false;
> +     if (is_migrate_cma(get_pageblock_migratetype(page))) {
> +             /*
> +              * CMA allocations (alloc_contig_range) really need to mark
> +              * isolate CMA pageblocks even when they are not movable in fact
> +              * so consider them movable here.
> +              */
> +             if (is_migrate_cma(migratetype))
> +                     return false;
> +
> +             strscpy(reason, "CMA page", 9);

                reason = "CMA page";

> +             goto unmovable;
> +     }

Other than that looks good. After fixing the above, feel free to add
Acked-by: Michal Hocko <[email protected]>

-- 
Michal Hocko
SUSE Labs

Reply via email to