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

From: Christophe Leroy
Date: Fri Sep 09 2022 - 02:23:05 EST




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 ?

Thanks
Christophe