[PATCH] powerpc: Fix booting P9 hash with CONFIG_PPC_RADIX_MMU=N
Aneesh Kumar K.V
aneesh.kumar at linux.vnet.ibm.com
Thu May 25 16:22:32 AEST 2017
On Thursday 25 May 2017 11:46 AM, Michael Ellerman wrote:
> 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.
My suggestion was w.r.t consolidating different ways of clearing
RADIX_MMU feature flag into one place. Also I was not sure we want to
conditionally parse the pa-feature device tree. Instead we parse it
without any #ifdef in there and clear things which are not supported by
the kernel either via command line or via Kconfig.
-aneesh
More information about the Linuxppc-dev
mailing list