[PATCH] powerpc/64s: Fix NULL AT_BASE_PLATFORM when using DT CPU features

Gustavo Romero gromero at linux.vnet.ibm.com
Sat Mar 24 05:39:09 AEDT 2018


Hi Yi,

On 03/14/2018 05:34 AM, Li Yi (Adam) wrote:
>> So set it in the DT CPU features code also.
>>
>> This results in eg:
>>    $ LD_SHOW_AUXV=1 /bin/true | grep "AT_.*PLATFORM"
>>    AT_PLATFORM:     power9
>>    AT_BASE_PLATFORM:power9
>>
> 
> Is this issue related with DD2.2 CPU?
> I tested on a Boston system with DD2.1 CPU, with kernel 4.14.23,
> AT_BASE_PLATFORM value is correct:
> 
> [root at boston-sh-04 ~]# LD_SHOW_AUXV=1 /bin/true | grep "AT_.*PLATFORM"
> AT_PLATFORM:     power9
> AT_BASE_PLATFORM:power9
> [root at boston-sh-04 ~]# uname -a
> Linux boston-sh-04 4.14.23 #1 SMP Sat Mar 3 12:14:56 CST 2018 ppc64le
> ppc64le ppc64le GNU/Linux

It's not related to the processor version, rather it's related to if you
are under a VM or running on baremetal. The issue happens on baremetal
when you are using DT to get the CPU features. So I guess the test you
performed above is on a VM? On DD2.1 baremetal AT_BASE_PLATFORM is
missing as on a DD2.2 baremetal (if mpe's patch is not applied):

root at r222l:~# LD_SHOW_AUXV=1 /bin/true | grep "AT_.*PLATFORM"
AT_PLATFORM:     power9
root at r222l:~# lscpu | fgrep Model
Model:               2.1 (pvr 004e 1201)
Model name:          POWER9, altivec supported
root at r222l:~# uname -a
Linux r222l 4.13.0-32-generic #35-Ubuntu SMP Thu Jan 25 09:05:20 UTC 2018 ppc64le ppc64le ppc64le GNU/Linux
   

Regards,
Gustavo

> 
> Thanks,
> -Yi
> 
>> Signed-off-by: Michael Ellerman <mpe at ellerman.id.au>
>> ---
>>   arch/powerpc/kernel/dt_cpu_ftrs.c | 3 +++
>>   1 file changed, 3 insertions(+)
>>
>> diff --git a/arch/powerpc/kernel/dt_cpu_ftrs.c b/arch/powerpc/kernel/dt_cpu_ftrs.c
>> index 945e2c29ad2d..0bcfb0f256e1 100644
>> --- a/arch/powerpc/kernel/dt_cpu_ftrs.c
>> +++ b/arch/powerpc/kernel/dt_cpu_ftrs.c
>> @@ -720,6 +720,9 @@ static void __init cpufeatures_setup_finished(void)
>>                  cur_cpu_spec->cpu_features |= CPU_FTR_HVMODE;
>>          }
>>
>> +       /* Make sure powerpc_base_platform is non-NULL */
>> +       powerpc_base_platform = cur_cpu_spec->platform;
>> +
>>          system_registers.lpcr = mfspr(SPRN_LPCR);
>>          system_registers.hfscr = mfspr(SPRN_HFSCR);
>>          system_registers.fscr = mfspr(SPRN_FSCR);
>> --
>> 2.14.1
> 



More information about the Linuxppc-dev mailing list