ACK/cmnt: [SRU][Artful][Bionic][PATCH 1/1] powerpc/64s: Fix NULL AT_BASE_PLATFORM when using DT CPU features
Kleber Souza
kleber.souza at canonical.com
Tue Apr 3 14:15:52 UTC 2018
On 03/30/18 21:33, Joseph Salisbury wrote:
> From: Michael Ellerman <mpe at 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 at ellerman.id.au>
> Reviewed-by: Nicholas Piggin <npiggin at 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 at canonical.com>
Acked-by: Kleber Sacilotto de Souza <kleber.souza at 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);
>
More information about the kernel-team
mailing list