]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
s390/mm: Get total ram pages from memblock
authorWei Yang <richard.weiyang@gmail.com>
Sun, 16 Jun 2024 01:35:37 +0000 (01:35 +0000)
committerAlexander Gordeev <agordeev@linux.ibm.com>
Mon, 24 Jun 2024 09:12:39 +0000 (11:12 +0200)
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 <richard.weiyang@gmail.com>
CC: Mike Rapoport (IBM) <rppt@kernel.org>
CC: David Hildenbrand <david@redhat.com>
Reviewed-by: David Hildenbrand <david@redhat.com>
Link: https://lore.kernel.org/r/20240616013537.20338-1-richard.weiyang@gmail.com
Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
Signed-off-by: Alexander Gordeev <agordeev@linux.ibm.com>
arch/s390/mm/init.c

index e769d2726f4e4af7f1ee54ac0c83e1a4da3004ed..ddcd39ef43463ade94bc3c94432a0afe6d6840d0 100644 (file)
@@ -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);