Re: [PATCH v1 02/19] powerpc/64e: Tie PPC_BOOK3E_64 to PPC_E500MC

From: Michael Ellerman
Date: Fri Sep 09 2022 - 08:39:47 EST


Christophe Leroy <christophe.leroy@xxxxxxxxxx> writes:
> Le 09/09/2022 à 07:50, Michael Ellerman a écrit :
>> Hi Christophe,
>>
>> Thanks for trying to clean up this tangled mess.
>>
>> Christophe Leroy <christophe.leroy@xxxxxxxxxx> writes:
>>> The only 64-bit Book3E CPUs we support is the e500mc.
>>
>> AFAIK the e500mc is 32-bit?
>
> Yes it seems.
>
>>
>> We support e5500 and e6500 which are 64-bit Book3E.
>>
>> They're derivatives of the e500mc AIUI.
>>
>> So CONFIG_PPC_E500MC actually means e500mc *and later derivatives*.
>>
>> You can see that with eg:
>>
>> config SPE_POSSIBLE
>> def_bool y
>> depends on E500 && !PPC_E500MC
>>
>> Because e500mc dropped SPE, and so therefore e5500 and e6500 don't have
>> it either.
>>
>> And eg:
>>
>> #ifdef CONFIG_PPC_E500MC
>> _GLOBAL(__setup_cpu_e6500)
>> mflr r6
>>
>>
>>> However our Kconfig allows configurating a kernel that has 64-bit
>>> Book3E support, but no e500mc support enabled. Such a kernel
>>> would never boot, it doesn't know about any CPUs.
>>
>> That is true.
>>
>>> To fix this, force e500mc to be selected whenever we are
>>> building a 64-bit Book3E kernel.
>>
>> I think that's a reasonable fix, just it's important to differentiate
>> between CONFIG_PPC_E500MC (the symbol) and e500mc (the CPU).
>
> Ok, I'll see how I can make it more explicit.
>
>>
>>> And add a test to detect futur situations where cpu_specs is empty.
>> future
>>>
>>> Signed-off-by: Christophe Leroy <christophe.leroy@xxxxxxxxxx>
>>> ---
>>> arch/powerpc/kernel/cputable.c | 2 ++
>>> arch/powerpc/platforms/Kconfig.cputype | 2 ++
>>> 2 files changed, 4 insertions(+)
>>>
>> ..
>>> diff --git a/arch/powerpc/platforms/Kconfig.cputype b/arch/powerpc/platforms/Kconfig.cputype
>>> index 5185d942b455..19fd95a06352 100644
>>> --- a/arch/powerpc/platforms/Kconfig.cputype
>>> +++ b/arch/powerpc/platforms/Kconfig.cputype
>>> @@ -108,6 +108,8 @@ config PPC_BOOK3S_64
>>> config PPC_BOOK3E_64
>>> bool "Embedded processors"
>>> select PPC_FSL_BOOK3E
>>> + select E500
>>> + select PPC_E500MC
>>> select PPC_FPU # Make it a choice ?
>>> select PPC_SMP_MUXED_IPI
>>> select PPC_DOORBELL
>>
>> I think that makes the select of PPC_E500MC below redundant:
>>
>> config PPC_QEMU_E500
>> bool "QEMU generic e500 platform"
>> select DEFAULT_UIMAGE
>> select E500
>> select PPC_E500MC if PPC64
>
> That's handled in [v1,10/19] powerpc: Remove redundant selection of
> E500 and E500MC. Should I reorder patches ?

No that's fine the way it is, I hadn't looked at patch 10 when I replied.

cheers