From: Wei Yang Date: Sun, 16 Jun 2024 01:35:37 +0000 (+0000) Subject: s390/mm: Get total ram pages from memblock X-Git-Tag: v6.11-rc1~126^2~25 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=37db17c1008c84f972da1ddd7bb10248670e6aa3;p=thirdparty%2Fkernel%2Flinux.git s390/mm: Get total ram pages from memblock On s390, zero page's size relies on total ram pages. Since we plan to move the accounting into __free_pages_core(), totalram_pages may not represent the total usable pages on system at this point when defer_init is enabled. We can get the total usable pages from memblock directly. The size maybe not accurate due to the alignment, but enough for the calculation. Signed-off-by: Wei Yang CC: Mike Rapoport (IBM) CC: David Hildenbrand Reviewed-by: David Hildenbrand Link: https://lore.kernel.org/r/20240616013537.20338-1-richard.weiyang@gmail.com Signed-off-by: Vasily Gorbik Signed-off-by: Alexander Gordeev --- diff --git a/arch/s390/mm/init.c b/arch/s390/mm/init.c index e769d2726f4e4..ddcd39ef43463 100644 --- a/arch/s390/mm/init.c +++ b/arch/s390/mm/init.c @@ -62,6 +62,7 @@ EXPORT_SYMBOL(zero_page_mask); static void __init setup_zero_pages(void) { + unsigned long total_pages = PHYS_PFN(memblock_phys_mem_size() - memblock_reserved_size()); unsigned int order; struct page *page; int i; @@ -70,7 +71,7 @@ static void __init setup_zero_pages(void) order = 7; /* Limit number of empty zero pages for small memory sizes */ - while (order > 2 && (totalram_pages() >> 10) < (1UL << order)) + while (order > 2 && (total_pages >> 10) < (1UL << order)) order--; empty_zero_page = __get_free_pages(GFP_KERNEL | __GFP_ZERO, order);