All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Michal Suchánek" <msuchanek@suse.de>
To: Michael Ellerman <mpe@ellerman.id.au>
Cc: linuxppc-dev@ozlabs.org, linux-kernel@vger.kernel.org, npiggin@gmail.com
Subject: Re: [PATCH 4/6] powerpc/64s: Enable barrier_nospec based on firmware settings
Date: Thu, 26 Apr 2018 18:02:58 +0200	[thread overview]
Message-ID: <20180426180258.04e6bee6@kitsune.suse.cz> (raw)
In-Reply-To: <20180424041559.32410-4-mpe@ellerman.id.au>

Hello,

On Tue, 24 Apr 2018 14:15:57 +1000
Michael Ellerman <mpe@ellerman.id.au> wrote:

> From: Michal Suchanek <msuchanek@suse.de>
> 
> Check what firmware told us and enable/disable the barrier_nospec as
> appropriate.
> 
> We err on the side of enabling the barrier, as it's no-op on older
> systems, see the comment for more detail.
> 
> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
> ---
>  arch/powerpc/include/asm/setup.h       |  1 +
>  arch/powerpc/kernel/security.c         | 60
> ++++++++++++++++++++++++++++++++++
> arch/powerpc/platforms/powernv/setup.c |  1 +
> arch/powerpc/platforms/pseries/setup.c |  1 + 4 files changed, 63
> insertions(+)
> 
> diff --git a/arch/powerpc/include/asm/setup.h
> b/arch/powerpc/include/asm/setup.h index 4335cddc1cf2..aeb175e8a525
> 100644 --- a/arch/powerpc/include/asm/setup.h
> +++ b/arch/powerpc/include/asm/setup.h
> @@ -52,6 +52,7 @@ enum l1d_flush_type {
>  
>  void setup_rfi_flush(enum l1d_flush_type, bool enable);
>  void do_rfi_flush_fixups(enum l1d_flush_type types);
> +void setup_barrier_nospec(void);
>  void do_barrier_nospec_fixups(bool enable);
>  
>  #ifdef CONFIG_PPC_BOOK3S_64
> diff --git a/arch/powerpc/kernel/security.c
> b/arch/powerpc/kernel/security.c index b963eae0b0a0..d1b9639e5e24
> 100644 --- a/arch/powerpc/kernel/security.c
> +++ b/arch/powerpc/kernel/security.c
> @@ -8,6 +8,7 @@
>  #include <linux/device.h>
>  #include <linux/seq_buf.h>
>  
> +#include <asm/debugfs.h>
>  #include <asm/security_features.h>
>  #include <asm/setup.h>
>  
> @@ -22,6 +23,65 @@ static void enable_barrier_nospec(bool enable)
>  	do_barrier_nospec_fixups(enable);
>  }
>  
> +void setup_barrier_nospec(void)
> +{
> +	bool enable;
> +
> +	/*
> +	 * It would make sense to check SEC_FTR_SPEC_BAR_ORI31 below
> as well.
> +	 * But there's a good reason not to. The two flags we check
> below are
> +	 * both are enabled by default in the kernel, so if the
> hcall is not
> +	 * functional they will be enabled.
> +	 * On a system where the host firmware has been updated (so
> the ori
> +	 * functions as a barrier), but on which the hypervisor
> (KVM/Qemu) has
> +	 * not been updated, we would like to enable the barrier.
> Dropping the
> +	 * check for SEC_FTR_SPEC_BAR_ORI31 achieves that. The only
> downside is
> +	 * we potentially enable the barrier on systems where the
> host firmware
> +	 * is not updated, but that's harmless as it's a no-op.
> +	 */
> +	enable = security_ftr_enabled(SEC_FTR_FAVOUR_SECURITY) &&
> +		 security_ftr_enabled(SEC_FTR_BNDS_CHK_SPEC_BAR);
> +
> +	enable_barrier_nospec(enable);
> +}

I am missing the option for the barrier to be disabled by a kernel
commandline argument here.

It does make sense to add a kernel parameter that is checked on boot to
be compatible with other platforms that implement one.

Thanks

Michal

  reply	other threads:[~2018-04-26 16:03 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-04-24  4:15 [PATCH 1/6] powerpc/64s: Add barrier_nospec Michael Ellerman
2018-04-24  4:15 ` [PATCH 2/6] powerpc/64s: Add support for ori barrier_nospec patching Michael Ellerman
2018-04-26 16:10   ` Michal Suchánek
2018-05-01 12:25     ` Michael Ellerman
2018-05-01 12:25       ` Michael Ellerman
2018-04-24  4:15 ` [PATCH 3/6] powerpc/64s: Patch barrier_nospec in modules Michael Ellerman
2018-05-03 13:15   ` Michal Suchánek
2018-04-24  4:15 ` [PATCH 4/6] powerpc/64s: Enable barrier_nospec based on firmware settings Michael Ellerman
2018-04-26 16:02   ` Michal Suchánek [this message]
2018-05-01 11:11     ` Michael Ellerman
2018-05-01 11:11       ` Michael Ellerman
2018-05-02 11:41       ` Michal Suchánek
2018-05-02 11:41         ` Michal Suchánek
2018-05-04  0:58         ` Michael Ellerman
2018-05-04  0:58           ` Michael Ellerman
2018-04-24  4:15 ` [PATCH 5/6] powerpc: Use barrier_nospec in copy_from_user() Michael Ellerman
2018-04-24  4:15 ` [PATCH 6/6] powerpc/64: Use barrier_nospec in syscall entry Michael Ellerman
2018-04-24  5:44 ` [PATCH 1/6] powerpc/64s: Add barrier_nospec Nicholas Piggin
2018-05-28 13:19 ` [PATCH] powerpc/64s: Enhance the information in cpu_show_spectre_v1() Michal Suchanek
2018-05-29 14:03   ` kbuild test robot
2018-05-29 14:13   ` Christophe LEROY
2018-05-29 14:46     ` Michal Suchánek
2018-05-29 14:46       ` Michal Suchánek
2018-05-29 15:24       ` Christophe Leroy
2018-05-29 16:15         ` Joe Perches
2018-05-29 16:15           ` Joe Perches
2018-06-04 14:11   ` Michael Ellerman
2018-06-04 14:10 ` [1/6] powerpc/64s: Add barrier_nospec Michael Ellerman

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20180426180258.04e6bee6@kitsune.suse.cz \
    --to=msuchanek@suse.de \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linuxppc-dev@ozlabs.org \
    --cc=mpe@ellerman.id.au \
    --cc=npiggin@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.