[PATCH] powerpc: Fix booting P9 hash with CONFIG_PPC_RADIX_MMU=N

Michael Ellerman mpe at ellerman.id.au
Thu May 25 16:16:01 AEST 2017


Michael Neuling <mikey at neuling.org> writes:

> On Wed, 2017-05-24 at 14:26 +0530, Aneesh Kumar K.V wrote:
>> Michael Neuling <mikey at neuling.org> writes:
>> 
>> > Currently if you disable CONFIG_PPC_RADIX_MMU you'll crash on boot on
>> > a P9. This is because we still set MMU_FTR_TYPE_RADIX via
>> > ibm,pa-features and MMU_FTR_TYPE_RADIX is what's used for code patching
>> > in much of the asm code (ie. slb_miss_realmode)
>> > 
>> > This patch fixes the problem by stopping MMU_FTR_TYPE_RADIX from being
>> > set from ibm.pa-features.
>> > 
>> > We may eventually end up removing the CONFIG_PPC_RADIX_MMU option
>> > completely but until then this fixes the issue.
>> > 
>> > Signed-off-by: Michael Neuling <mikey at neuling.org>
>> > ---
>> >  arch/powerpc/kernel/prom.c | 2 ++
>> >  1 file changed, 2 insertions(+)
>> > 
>> > diff --git a/arch/powerpc/kernel/prom.c b/arch/powerpc/kernel/prom.c
>> > index 40c4887c27..f830562974 100644
>> > --- a/arch/powerpc/kernel/prom.c
>> > +++ b/arch/powerpc/kernel/prom.c
>> > @@ -161,7 +161,9 @@ static struct ibm_pa_feature {
>> >  	{ .pabyte = 0,  .pabit = 3, .cpu_features  = CPU_FTR_CTRL },
>> >  	{ .pabyte = 0,  .pabit = 6, .cpu_features  = CPU_FTR_NOEXECUTE },
>> >  	{ .pabyte = 1,  .pabit = 2, .mmu_features  = MMU_FTR_CI_LARGE_PAGE
>> > },
>> > +#ifdef CONFIG_PPC_RADIX_MMU
>> >  	{ .pabyte = 40, .pabit = 0, .mmu_features  = MMU_FTR_TYPE_RADIX },
>> > +#endif
>> >  	{ .pabyte = 1,  .pabit = 1, .invert = 1, .cpu_features =
>> > CPU_FTR_NODSISRALIGN },
>> >  	{ .pabyte = 5,  .pabit = 0, .cpu_features  = CPU_FTR_REAL_LE,
>> >  				    .cpu_user_ftrs = PPC_FEATURE_TRUE_LE },
>> > -- 
>> > 2.11.0
>> 
>> Instead can we do that feature removal in mmu_early_init_devtree. ie,
>> something like
>
> It looks like mmu_early_init_devtree() gets called after parsing ibm,pa_features
> so that should work.

But why is doing it later preferable?

Mikey's patch means it will never be set at any point during boot, which
seems obviously better to me.

cheers


More information about the Linuxppc-dev mailing list