Message ID | 22a8177249cbb14425134fe49af0fe5b8ec2c560.1522436475.git.joseph.salisbury@canonical.com |
---|---|
State | New |
Headers | show |
Series | powerpc/64s: Fix NULL AT_BASE_PLATFORM when using DT CPU features | expand |
On 03/30/18 21:33, Joseph Salisbury wrote: > From: Michael Ellerman <mpe@ellerman.id.au> > > BugLink: http://bugs.launchpad.net/bugs/1759312 > > When running virtualised the powerpc kernel is able to run the system > in "compat mode" - which means the kernel and hardware are pretending > to userspace that the CPU is an older version than it actually is. > > AT_BASE_PLATFORM is an AUXV entry that we export to userspace for use > when we're running in that mode, which tells userspace the "platform" > string for the real CPU version, as opposed to the faked version. > > Although we don't support compat mode when using DT CPU features, and > arguably don't need to set AT_BASE_PLATFORM, the existing cputable > based code always sets it even when we're running bare metal. That > means the lack of AT_BASE_PLATFORM is a user-visible artifact of the > fact that the kernel is using DT CPU features, which we don't want. > > 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 > > Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> > Reviewed-by: Nicholas Piggin <npiggin@gmail.com> > (cherry picked from linux-next commit e4b79900222b8cccd4da4a7a89581f0e1b764ed2) The commit has already hit Linus' tree with the same sha1, so the 'linux-next' part can be removed when applying the patch. > Signed-off-by: Joseph Salisbury <joseph.salisbury@canonical.com> Acked-by: Kleber Sacilotto de Souza <kleber.souza@canonical.com> > --- > 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 7275fed..f63f477 100644 > --- a/arch/powerpc/kernel/dt_cpu_ftrs.c > +++ b/arch/powerpc/kernel/dt_cpu_ftrs.c > @@ -746,6 +746,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); >
diff --git a/arch/powerpc/kernel/dt_cpu_ftrs.c b/arch/powerpc/kernel/dt_cpu_ftrs.c index 7275fed..f63f477 100644 --- a/arch/powerpc/kernel/dt_cpu_ftrs.c +++ b/arch/powerpc/kernel/dt_cpu_ftrs.c @@ -746,6 +746,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);