| From: Yuan Can <yuancan@huawei.com> |
| Subject: mm: hugetlb_vmemmap: allow alloc vmemmap pages fallback to other nodes |
| Date: Wed, 6 Sep 2023 17:31:57 +0800 |
| |
| In vmemmap_remap_free(), a new head vmemmap page is allocated to avoid |
| breaking a contiguous block of struct page memory, however, the allocation |
| can always fail when the given node is movable node. Remove the |
| __GFP_THISNODE to help avoid fragmentation. |
| |
| Link: https://lkml.kernel.org/r/20230906093157.9737-1-yuancan@huawei.com |
| Signed-off-by: Yuan Can <yuancan@huawei.com> |
| Suggested-by: Mike Kravetz <mike.kravetz@oracle.com> |
| Reviewed-by: Mike Kravetz <mike.kravetz@oracle.com> |
| Suggested-by: Muchun Song <songmuchun@bytedance.com> |
| Reviewed-by: Muchun Song <songmuchun@bytedance.com> |
| Signed-off-by: Andrew Morton <akpm@linux-foundation.org> |
| --- |
| |
| mm/hugetlb_vmemmap.c | 3 +-- |
| 1 file changed, 1 insertion(+), 2 deletions(-) |
| |
| --- a/mm/hugetlb_vmemmap.c~mm-hugetlb_vmemmap-allow-alloc-vmemmap-pages-fallback-to-other-nodes |
| +++ a/mm/hugetlb_vmemmap.c |
| @@ -320,8 +320,7 @@ static int vmemmap_remap_free(unsigned l |
| .vmemmap_pages = &vmemmap_pages, |
| }; |
| int nid = page_to_nid((struct page *)start); |
| - gfp_t gfp_mask = GFP_KERNEL | __GFP_THISNODE | __GFP_NORETRY | |
| - __GFP_NOWARN; |
| + gfp_t gfp_mask = GFP_KERNEL | __GFP_NORETRY | __GFP_NOWARN; |
| |
| /* |
| * Allocate a new head vmemmap page to avoid breaking a contiguous |
| _ |