Commit 3018fbc6 authored by Michael Ellerman's avatar Michael Ellerman
Browse files

powerpc/64s: Fix boot failure with 4K Radix



When using the Radix MMU our PGD is always 64K, and must be naturally
aligned.

For a 4K page size kernel that means page alignment of swapper_pg_dir is
not sufficient, leading to failure to boot.

Use the existing MAX_PTRS_PER_PGD which has the correct value, and
avoids us hard-coding 64K here.

Fixes: e72421a0 ("powerpc: Define swapper_pg_dir[] in C")
Reported-by: default avatarDaniel Axtens <dja@axtens.net>
Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/20210624123420.2784187-1-mpe@ellerman.id.au
parent a736143a
Loading
Loading
Loading
Loading
+7 −1
Original line number Diff line number Diff line
@@ -28,7 +28,13 @@
#include <asm/hugetlb.h>
#include <asm/pte-walk.h>

pgd_t swapper_pg_dir[MAX_PTRS_PER_PGD] __page_aligned_bss;
#ifdef CONFIG_PPC64
#define PGD_ALIGN (sizeof(pgd_t) * MAX_PTRS_PER_PGD)
#else
#define PGD_ALIGN PAGE_SIZE
#endif

pgd_t swapper_pg_dir[MAX_PTRS_PER_PGD] __section(".bss..page_aligned") __aligned(PGD_ALIGN);

static inline int is_exec_fault(void)
{