linuxppc-dev.lists.ozlabs.org archive mirror
 help / color / mirror / Atom feed
From: <gregkh@linuxfoundation.org>
To: christophe.leroy@c-s.fr, diana.craciun@nxp.com,
	gregkh@linuxfoundation.org, linuxppc-dev@ozlabs.org,
	mpe@ellerman.id.au, msuchanek@suse.de
Cc: stable-commits@vger.kernel.org
Subject: Patch "powerpc/fsl: Add infrastructure to fixup branch predictor flush" has been added to the 4.19-stable tree
Date: Fri, 29 Mar 2019 16:07:53 +0100	[thread overview]
Message-ID: <1553872073254222@kroah.com> (raw)
In-Reply-To: <20190329112620.14489-21-mpe@ellerman.id.au>


This is a note to let you know that I've just added the patch titled

    powerpc/fsl: Add infrastructure to fixup branch predictor flush

to the 4.19-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     powerpc-fsl-add-infrastructure-to-fixup-branch-predictor-flush.patch
and it can be found in the queue-4.19 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@vger.kernel.org> know about it.


From foo@baz Fri Mar 29 16:04:51 CET 2019
From: Michael Ellerman <mpe@ellerman.id.au>
Date: Fri, 29 Mar 2019 22:26:08 +1100
Subject: powerpc/fsl: Add infrastructure to fixup branch predictor flush
To: stable@vger.kernel.org, gregkh@linuxfoundation.org
Cc: linuxppc-dev@ozlabs.org, diana.craciun@nxp.com, msuchanek@suse.de, christophe.leroy@c-s.fr
Message-ID: <20190329112620.14489-21-mpe@ellerman.id.au>

From: Diana Craciun <diana.craciun@nxp.com>

commit 76a5eaa38b15dda92cd6964248c39b5a6f3a4e9d upstream.

In order to protect against speculation attacks (Spectre
variant 2) on NXP PowerPC platforms, the branch predictor
should be flushed when the privillege level is changed.
This patch is adding the infrastructure to fixup at runtime
the code sections that are performing the branch predictor flush
depending on a boot arg parameter which is added later in a
separate patch.

Signed-off-by: Diana Craciun <diana.craciun@nxp.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 arch/powerpc/include/asm/feature-fixups.h |   12 ++++++++++++
 arch/powerpc/include/asm/setup.h          |    2 ++
 arch/powerpc/kernel/vmlinux.lds.S         |    8 ++++++++
 arch/powerpc/lib/feature-fixups.c         |   23 +++++++++++++++++++++++
 4 files changed, 45 insertions(+)

--- a/arch/powerpc/include/asm/feature-fixups.h
+++ b/arch/powerpc/include/asm/feature-fixups.h
@@ -221,6 +221,17 @@ label##3:					       	\
 	FTR_ENTRY_OFFSET 953b-954b;			\
 	.popsection;
 
+#define START_BTB_FLUSH_SECTION			\
+955:							\
+
+#define END_BTB_FLUSH_SECTION			\
+956:							\
+	.pushsection __btb_flush_fixup,"a";	\
+	.align 2;							\
+957:						\
+	FTR_ENTRY_OFFSET 955b-957b;			\
+	FTR_ENTRY_OFFSET 956b-957b;			\
+	.popsection;
 
 #ifndef __ASSEMBLY__
 #include <linux/types.h>
@@ -230,6 +241,7 @@ extern long __start___stf_entry_barrier_
 extern long __start___stf_exit_barrier_fixup, __stop___stf_exit_barrier_fixup;
 extern long __start___rfi_flush_fixup, __stop___rfi_flush_fixup;
 extern long __start___barrier_nospec_fixup, __stop___barrier_nospec_fixup;
+extern long __start__btb_flush_fixup, __stop__btb_flush_fixup;
 
 void apply_feature_fixups(void);
 void setup_feature_keys(void);
--- a/arch/powerpc/include/asm/setup.h
+++ b/arch/powerpc/include/asm/setup.h
@@ -67,6 +67,8 @@ void do_barrier_nospec_fixups_range(bool
 static inline void do_barrier_nospec_fixups_range(bool enable, void *start, void *end) { };
 #endif
 
+void do_btb_flush_fixups(void);
+
 #endif /* !__ASSEMBLY__ */
 
 #endif	/* _ASM_POWERPC_SETUP_H */
--- a/arch/powerpc/kernel/vmlinux.lds.S
+++ b/arch/powerpc/kernel/vmlinux.lds.S
@@ -164,6 +164,14 @@ SECTIONS
 	}
 #endif /* CONFIG_PPC_BARRIER_NOSPEC */
 
+#ifdef CONFIG_PPC_FSL_BOOK3E
+	. = ALIGN(8);
+	__spec_btb_flush_fixup : AT(ADDR(__spec_btb_flush_fixup) - LOAD_OFFSET) {
+		__start__btb_flush_fixup = .;
+		*(__btb_flush_fixup)
+		__stop__btb_flush_fixup = .;
+	}
+#endif
 	EXCEPTION_TABLE(0)
 
 	NOTES :kernel :notes
--- a/arch/powerpc/lib/feature-fixups.c
+++ b/arch/powerpc/lib/feature-fixups.c
@@ -347,6 +347,29 @@ void do_barrier_nospec_fixups_range(bool
 
 	printk(KERN_DEBUG "barrier-nospec: patched %d locations\n", i);
 }
+
+static void patch_btb_flush_section(long *curr)
+{
+	unsigned int *start, *end;
+
+	start = (void *)curr + *curr;
+	end = (void *)curr + *(curr + 1);
+	for (; start < end; start++) {
+		pr_devel("patching dest %lx\n", (unsigned long)start);
+		patch_instruction(start, PPC_INST_NOP);
+	}
+}
+
+void do_btb_flush_fixups(void)
+{
+	long *start, *end;
+
+	start = PTRRELOC(&__start__btb_flush_fixup);
+	end = PTRRELOC(&__stop__btb_flush_fixup);
+
+	for (; start < end; start += 2)
+		patch_btb_flush_section(start);
+}
 #endif /* CONFIG_PPC_FSL_BOOK3E */
 
 void do_lwsync_fixups(unsigned long value, void *fixup_start, void *fixup_end)


Patches currently in stable-queue which might be from mpe@ellerman.id.au are

queue-4.19/powerpc-fsl-emulate-sprn_bucsr-register.patch
queue-4.19/powerpc-fsl-flush-the-branch-predictor-at-each-kernel-entry-64bit.patch
queue-4.19/powerpc-fsl-update-spectre-v2-reporting.patch
queue-4.19/powerpc-fsl-add-macro-to-flush-the-branch-predictor.patch
queue-4.19/powerpc-security-fix-spectre_v2-reporting.patch
queue-4.19/powerpc-fsl-fix-the-flush-of-branch-predictor.patch
queue-4.19/powerpc-fsl-enable-runtime-patching-if-nospectre_v2-boot-arg-is-used.patch
queue-4.19/powerpc-fsl-fixed-warning-orphan-section-__btb_flush_fixup.patch
queue-4.19/powerpc-fsl-add-nospectre_v2-command-line-argument.patch
queue-4.19/powerpc-fsl-add-infrastructure-to-fixup-branch-predictor-flush.patch
queue-4.19/powerpc-fsl-flush-the-branch-predictor-at-each-kernel-entry-32-bit.patch
queue-4.19/powerpc-fsl-flush-branch-predictor-when-entering-kvm.patch

  parent reply	other threads:[~2019-03-29 15:55 UTC|newest]

Thread overview: 87+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-03-29 11:25 [PATCH stable v4.14 00/32] powerpc spectre backports for 4.14 Michael Ellerman
2019-03-29 11:25 ` [PATCH stable v4.14 01/32] powerpc/64s: Add support for ori barrier_nospec patching Michael Ellerman
2019-03-29 14:54   ` Patch "[PATCH stable v4.14 01/32] powerpc/64s: Add support for ori barrier_nospec patching" has been added to the 4.14-stable tree gregkh
2019-03-29 11:25 ` [PATCH stable v4.14 02/32] powerpc/64s: Patch barrier_nospec in modules Michael Ellerman
2019-03-29 14:54   ` Patch "[PATCH stable v4.14 02/32] powerpc/64s: Patch barrier_nospec in modules" has been added to the 4.14-stable tree gregkh
2019-03-29 11:25 ` [PATCH stable v4.14 03/32] powerpc/64s: Enable barrier_nospec based on firmware settings Michael Ellerman
2019-03-29 14:54   ` Patch "[PATCH stable v4.14 03/32] powerpc/64s: Enable barrier_nospec based on firmware settings" has been added to the 4.14-stable tree gregkh
2019-03-29 11:25 ` [PATCH stable v4.14 04/32] powerpc: Use barrier_nospec in copy_from_user() Michael Ellerman
2019-03-29 14:54   ` Patch "[PATCH stable v4.14 04/32] powerpc: Use barrier_nospec in copy_from_user()" has been added to the 4.14-stable tree gregkh
2019-03-29 11:25 ` [PATCH stable v4.14 05/32] powerpc/64: Use barrier_nospec in syscall entry Michael Ellerman
2019-03-29 14:54   ` Patch "[PATCH stable v4.14 05/32] powerpc/64: Use barrier_nospec in syscall entry" has been added to the 4.14-stable tree gregkh
2019-03-29 11:25 ` [PATCH stable v4.14 06/32] powerpc/64s: Enhance the information in cpu_show_spectre_v1() Michael Ellerman
2019-03-29 14:54   ` Patch "[PATCH stable v4.14 06/32] powerpc/64s: Enhance the information in cpu_show_spectre_v1()" has been added to the 4.14-stable tree gregkh
2019-03-29 11:25 ` [PATCH stable v4.14 07/32] powerpc64s: Show ori31 availability in spectre_v1 sysfs file not v2 Michael Ellerman
2019-03-29 14:54   ` Patch "[PATCH stable v4.14 07/32] powerpc64s: Show ori31 availability in spectre_v1 sysfs file not v2" has been added to the 4.14-stable tree gregkh
2019-03-29 11:25 ` [PATCH stable v4.14 08/32] powerpc/64: Disable the speculation barrier from the command line Michael Ellerman
2019-03-29 14:54   ` Patch "[PATCH stable v4.14 08/32] powerpc/64: Disable the speculation barrier from the command line" has been added to the 4.14-stable tree gregkh
2019-03-29 11:25 ` [PATCH stable v4.14 09/32] powerpc/64: Make stf barrier PPC_BOOK3S_64 specific Michael Ellerman
2019-03-29 14:54   ` Patch "[PATCH stable v4.14 09/32] powerpc/64: Make stf barrier PPC_BOOK3S_64 specific." has been added to the 4.14-stable tree gregkh
2019-03-29 11:25 ` [PATCH stable v4.14 10/32] powerpc/64: Add CONFIG_PPC_BARRIER_NOSPEC Michael Ellerman
2019-03-29 14:54   ` Patch "[PATCH stable v4.14 10/32] powerpc/64: Add CONFIG_PPC_BARRIER_NOSPEC" has been added to the 4.14-stable tree gregkh
2019-03-29 11:25 ` [PATCH stable v4.14 11/32] powerpc/64: Call setup_barrier_nospec() from setup_arch() Michael Ellerman
2019-03-29 14:54   ` Patch "[PATCH stable v4.14 11/32] powerpc/64: Call setup_barrier_nospec() from setup_arch()" has been added to the 4.14-stable tree gregkh
2019-03-29 11:26 ` [PATCH stable v4.14 12/32] powerpc/64: Make meltdown reporting Book3S 64 specific Michael Ellerman
2019-03-29 14:54   ` Patch "[PATCH stable v4.14 12/32] powerpc/64: Make meltdown reporting Book3S 64 specific" has been added to the 4.14-stable tree gregkh
2019-03-29 11:26 ` [PATCH stable v4.14 13/32] powerpc/fsl: Add barrier_nospec implementation for NXP PowerPC Book3E Michael Ellerman
2019-03-29 14:54   ` Patch "[PATCH stable v4.14 13/32] powerpc/fsl: Add barrier_nospec implementation for NXP PowerPC Book3E" has been added to the 4.14-stable tree gregkh
2019-03-29 16:22   ` [PATCH stable v4.14 13/32] powerpc/fsl: Add barrier_nospec implementation for NXP PowerPC Book3E Joakim Tjernlund
2019-04-02  6:19     ` Michael Ellerman
2019-04-02  6:56       ` Joakim Tjernlund
2019-04-03  0:53         ` Michael Ellerman
2019-04-03  4:38           ` Joakim Tjernlund
2019-03-29 11:26 ` [PATCH stable v4.14 14/32] powerpc/fsl: Sanitize the syscall table for NXP PowerPC 32 bit platforms Michael Ellerman
2019-03-29 14:54   ` Patch "[PATCH stable v4.14 14/32] powerpc/fsl: Sanitize the syscall table for NXP PowerPC 32 bit platforms" has been added to the 4.14-stable tree gregkh
2019-03-29 11:26 ` [PATCH stable v4.14 15/32] powerpc/asm: Add a patch_site macro & helpers for patching instructions Michael Ellerman
2019-03-29 14:54   ` Patch "[PATCH stable v4.14 15/32] powerpc/asm: Add a patch_site macro & helpers for patching instructions" has been added to the 4.14-stable tree gregkh
2019-03-29 11:26 ` [PATCH stable v4.14 16/32] powerpc/64s: Add new security feature flags for count cache flush Michael Ellerman
2019-03-29 14:54   ` Patch "[PATCH stable v4.14 16/32] powerpc/64s: Add new security feature flags for count cache flush" has been added to the 4.14-stable tree gregkh
2019-03-29 11:26 ` [PATCH stable v4.14 17/32] powerpc/64s: Add support for software count cache flush Michael Ellerman
2019-03-29 14:54   ` Patch "[PATCH stable v4.14 17/32] powerpc/64s: Add support for software count cache flush" has been added to the 4.14-stable tree gregkh
2019-03-29 11:26 ` [PATCH stable v4.14 18/32] powerpc/pseries: Query hypervisor for count cache flush settings Michael Ellerman
2019-03-29 14:54   ` Patch "[PATCH stable v4.14 18/32] powerpc/pseries: Query hypervisor for count cache flush settings" has been added to the 4.14-stable tree gregkh
2019-03-29 11:26 ` [PATCH stable v4.14 19/32] powerpc/powernv: Query firmware for count cache flush settings Michael Ellerman
2019-03-29 14:54   ` Patch "[PATCH stable v4.14 19/32] powerpc/powernv: Query firmware for count cache flush settings" has been added to the 4.14-stable tree gregkh
2019-03-29 11:26 ` [PATCH stable v4.14 20/32] powerpc/fsl: Add infrastructure to fixup branch predictor flush Michael Ellerman
2019-03-29 14:54   ` Patch "[PATCH stable v4.14 20/32] powerpc/fsl: Add infrastructure to fixup branch predictor flush" has been added to the 4.14-stable tree gregkh
2019-03-29 15:07   ` gregkh [this message]
2019-03-29 11:26 ` [PATCH stable v4.14 21/32] powerpc/fsl: Add macro to flush the branch predictor Michael Ellerman
2019-03-29 14:54   ` Patch "[PATCH stable v4.14 21/32] powerpc/fsl: Add macro to flush the branch predictor" has been added to the 4.14-stable tree gregkh
2019-03-29 15:07   ` Patch "powerpc/fsl: Add macro to flush the branch predictor" has been added to the 4.19-stable tree gregkh
2019-03-29 11:26 ` [PATCH stable v4.14 22/32] powerpc/fsl: Fix spectre_v2 mitigations reporting Michael Ellerman
2019-03-29 14:54   ` Patch "[PATCH stable v4.14 22/32] powerpc/fsl: Fix spectre_v2 mitigations reporting" has been added to the 4.14-stable tree gregkh
2019-03-29 11:26 ` [PATCH stable v4.14 23/32] powerpc/fsl: Emulate SPRN_BUCSR register Michael Ellerman
2019-03-29 14:54   ` Patch "[PATCH stable v4.14 23/32] powerpc/fsl: Emulate SPRN_BUCSR register" has been added to the 4.14-stable tree gregkh
2019-03-29 15:07   ` Patch "powerpc/fsl: Emulate SPRN_BUCSR register" has been added to the 4.19-stable tree gregkh
2019-03-29 11:26 ` [PATCH stable v4.14 24/32] powerpc/fsl: Add nospectre_v2 command line argument Michael Ellerman
2019-03-29 14:54   ` Patch "[PATCH stable v4.14 24/32] powerpc/fsl: Add nospectre_v2 command line argument" has been added to the 4.14-stable tree gregkh
2019-03-29 15:07   ` Patch "powerpc/fsl: Add nospectre_v2 command line argument" has been added to the 4.19-stable tree gregkh
2019-03-29 11:26 ` [PATCH stable v4.14 25/32] powerpc/fsl: Flush the branch predictor at each kernel entry (64bit) Michael Ellerman
2019-03-29 14:54   ` Patch "[PATCH stable v4.14 25/32] powerpc/fsl: Flush the branch predictor at each kernel entry (64bit)" has been added to the 4.14-stable tree gregkh
2019-03-29 15:07   ` Patch "powerpc/fsl: Flush the branch predictor at each kernel entry (64bit)" has been added to the 4.19-stable tree gregkh
2019-03-29 11:26 ` [PATCH stable v4.14 26/32] powerpc/fsl: Flush the branch predictor at each kernel entry (32 bit) Michael Ellerman
2019-03-29 14:54   ` Patch "[PATCH stable v4.14 26/32] powerpc/fsl: Flush the branch predictor at each kernel entry (32 bit)" has been added to the 4.14-stable tree gregkh
2019-03-29 15:07   ` Patch "powerpc/fsl: Flush the branch predictor at each kernel entry (32 bit)" has been added to the 4.19-stable tree gregkh
2019-03-29 11:26 ` [PATCH stable v4.14 27/32] powerpc/fsl: Flush branch predictor when entering KVM Michael Ellerman
2019-03-29 14:54   ` Patch "[PATCH stable v4.14 27/32] powerpc/fsl: Flush branch predictor when entering KVM" has been added to the 4.14-stable tree gregkh
2019-03-29 15:07   ` Patch "powerpc/fsl: Flush branch predictor when entering KVM" has been added to the 4.19-stable tree gregkh
2019-03-29 11:26 ` [PATCH stable v4.14 28/32] powerpc/fsl: Enable runtime patching if nospectre_v2 boot arg is used Michael Ellerman
2019-03-29 14:54   ` Patch "[PATCH stable v4.14 28/32] powerpc/fsl: Enable runtime patching if nospectre_v2 boot arg is used" has been added to the 4.14-stable tree gregkh
2019-03-29 15:07   ` Patch "powerpc/fsl: Enable runtime patching if nospectre_v2 boot arg is used" has been added to the 4.19-stable tree gregkh
2019-03-29 11:26 ` [PATCH stable v4.14 29/32] powerpc/fsl: Update Spectre v2 reporting Michael Ellerman
2019-03-29 14:54   ` Patch "[PATCH stable v4.14 29/32] powerpc/fsl: Update Spectre v2 reporting" has been added to the 4.14-stable tree gregkh
2019-03-29 15:07   ` Patch "powerpc/fsl: Update Spectre v2 reporting" has been added to the 4.19-stable tree gregkh
2019-03-29 11:26 ` [PATCH stable v4.14 30/32] powerpc/fsl: Fixed warning: orphan section `__btb_flush_fixup' Michael Ellerman
2019-03-29 14:54   ` Patch "[PATCH stable v4.14 30/32] powerpc/fsl: Fixed warning: orphan section `__btb_flush_fixup'" has been added to the 4.14-stable tree gregkh
2019-03-29 15:07   ` Patch "powerpc/fsl: Fixed warning: orphan section `__btb_flush_fixup'" has been added to the 4.19-stable tree gregkh
2019-03-29 11:26 ` [PATCH stable v4.14 31/32] powerpc/fsl: Fix the flush of branch predictor Michael Ellerman
2019-03-29 14:54   ` Patch "[PATCH stable v4.14 31/32] powerpc/fsl: Fix the flush of branch predictor." has been added to the 4.14-stable tree gregkh
2019-03-29 15:07   ` Patch "powerpc/fsl: Fix the flush of branch predictor." has been added to the 4.19-stable tree gregkh
2019-03-29 11:26 ` [PATCH stable v4.14 32/32] powerpc/security: Fix spectre_v2 reporting Michael Ellerman
2019-03-29 14:54   ` Patch "[PATCH stable v4.14 32/32] powerpc/security: Fix spectre_v2 reporting" has been added to the 4.14-stable tree gregkh
2019-03-29 15:07   ` Patch "powerpc/security: Fix spectre_v2 reporting" has been added to the 4.19-stable tree gregkh
2019-03-29 14:51 ` [PATCH stable v4.14 00/32] powerpc spectre backports for 4.14 Greg KH
2019-03-29 15:09   ` Greg KH
2019-03-31  9:53     ` Michael Ellerman
2019-04-02 15:21       ` Diana Madalina Craciun
2019-04-02 15:49         ` Greg KH

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=1553872073254222@kroah.com \
    --to=gregkh@linuxfoundation.org \
    --cc=christophe.leroy@c-s.fr \
    --cc=diana.craciun@nxp.com \
    --cc=linuxppc-dev@ozlabs.org \
    --cc=mpe@ellerman.id.au \
    --cc=msuchanek@suse.de \
    --cc=stable-commits@vger.kernel.org \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).