Also on hash with 4K PAGE_SIZE make sure we use 4K page size for
vmemmap.

Fixes: 2bfd65e45e87 ("powerpc/mm/radix: Add radix callbacks for early init 
routines")
Signed-off-by: Aneesh Kumar K.V <aneesh.ku...@linux.ibm.com>
---
 arch/powerpc/mm/book3s64/hash_utils.c    |  4 +---
 arch/powerpc/mm/book3s64/radix_pgtable.c | 16 +++++++---------
 2 files changed, 8 insertions(+), 12 deletions(-)

diff --git a/arch/powerpc/mm/book3s64/hash_utils.c 
b/arch/powerpc/mm/book3s64/hash_utils.c
index 49f8c8940bd9..54013bbc60aa 100644
--- a/arch/powerpc/mm/book3s64/hash_utils.c
+++ b/arch/powerpc/mm/book3s64/hash_utils.c
@@ -686,10 +686,8 @@ static void __init htab_init_page_sizes(void)
        if (mmu_psize_defs[MMU_PAGE_16M].shift &&
            memblock_phys_mem_size() >= 0x40000000)
                mmu_vmemmap_psize = MMU_PAGE_16M;
-       else if (mmu_psize_defs[MMU_PAGE_64K].shift)
-               mmu_vmemmap_psize = MMU_PAGE_64K;
        else
-               mmu_vmemmap_psize = MMU_PAGE_4K;
+               mmu_vmemmap_psize = mmu_virtual_psize;
 #endif /* CONFIG_SPARSEMEM_VMEMMAP */
 
        printk(KERN_DEBUG "Page orders: linear mapping = %d, "
diff --git a/arch/powerpc/mm/book3s64/radix_pgtable.c 
b/arch/powerpc/mm/book3s64/radix_pgtable.c
index 60d97fab4de2..03d804a0dc8c 100644
--- a/arch/powerpc/mm/book3s64/radix_pgtable.c
+++ b/arch/powerpc/mm/book3s64/radix_pgtable.c
@@ -529,14 +529,6 @@ void __init radix__early_init_devtree(void)
        mmu_psize_defs[MMU_PAGE_64K].shift = 16;
        mmu_psize_defs[MMU_PAGE_64K].ap = 0x5;
 found:
-#ifdef CONFIG_SPARSEMEM_VMEMMAP
-       if (mmu_psize_defs[MMU_PAGE_2M].shift) {
-               /*
-                * map vmemmap using 2M if available
-                */
-               mmu_vmemmap_psize = MMU_PAGE_2M;
-       }
-#endif /* CONFIG_SPARSEMEM_VMEMMAP */
        return;
 }
 
@@ -601,7 +593,13 @@ void __init radix__early_init_mmu(void)
 
 #ifdef CONFIG_SPARSEMEM_VMEMMAP
        /* vmemmap mapping */
-       mmu_vmemmap_psize = mmu_virtual_psize;
+       if (mmu_psize_defs[MMU_PAGE_2M].shift) {
+               /*
+                * map vmemmap using 2M if available
+                */
+               mmu_vmemmap_psize = MMU_PAGE_2M;
+       } else
+               mmu_vmemmap_psize = mmu_virtual_psize;
 #endif
        /*
         * initialize page table size
-- 
2.21.0

Reply via email to