linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: linux-kernel@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	stable@vger.kernel.org, Diana Craciun <diana.craciun@nxp.com>,
	Michael Ellerman <mpe@ellerman.id.au>,
	Sasha Levin <sashal@kernel.org>
Subject: [PATCH 4.9 22/76] powerpc/64: Add CONFIG_PPC_BARRIER_NOSPEC
Date: Mon, 15 Apr 2019 20:43:46 +0200	[thread overview]
Message-ID: <20190415183713.670291331@linuxfoundation.org> (raw)
In-Reply-To: <20190415183707.712011689@linuxfoundation.org>

commit 179ab1cbf883575c3a585bcfc0f2160f1d22a149 upstream.

Add a config symbol to encode which platforms support the
barrier_nospec speculation barrier. Currently this is just Book3S 64
but we will add Book3E in a future patch.

Signed-off-by: Diana Craciun <diana.craciun@nxp.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 arch/powerpc/Kconfig               | 7 ++++++-
 arch/powerpc/include/asm/barrier.h | 6 +++---
 arch/powerpc/include/asm/setup.h   | 2 +-
 arch/powerpc/kernel/Makefile       | 3 ++-
 arch/powerpc/kernel/module.c       | 4 +++-
 arch/powerpc/kernel/vmlinux.lds.S  | 4 +++-
 arch/powerpc/lib/feature-fixups.c  | 6 ++++--
 7 files changed, 22 insertions(+), 10 deletions(-)

diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
index 0a6bb48854e3..a238698178fc 100644
--- a/arch/powerpc/Kconfig
+++ b/arch/powerpc/Kconfig
@@ -128,7 +128,7 @@ config PPC
 	select ARCH_HAS_GCOV_PROFILE_ALL
 	select GENERIC_SMP_IDLE_THREAD
 	select GENERIC_CMOS_UPDATE
-	select GENERIC_CPU_VULNERABILITIES	if PPC_BOOK3S_64
+	select GENERIC_CPU_VULNERABILITIES	if PPC_BARRIER_NOSPEC
 	select GENERIC_TIME_VSYSCALL_OLD
 	select GENERIC_CLOCKEVENTS
 	select GENERIC_CLOCKEVENTS_BROADCAST if SMP
@@ -164,6 +164,11 @@ config PPC
 	select HAVE_ARCH_HARDENED_USERCOPY
 	select HAVE_KERNEL_GZIP
 
+config PPC_BARRIER_NOSPEC
+    bool
+    default y
+    depends on PPC_BOOK3S_64
+
 config GENERIC_CSUM
 	def_bool CPU_LITTLE_ENDIAN
 
diff --git a/arch/powerpc/include/asm/barrier.h b/arch/powerpc/include/asm/barrier.h
index a8131162104f..465a64316897 100644
--- a/arch/powerpc/include/asm/barrier.h
+++ b/arch/powerpc/include/asm/barrier.h
@@ -77,7 +77,7 @@ do {									\
 
 #define smp_mb__before_spinlock()   smp_mb()
 
-#ifdef CONFIG_PPC_BOOK3S_64
+#ifdef CONFIG_PPC_BARRIER_NOSPEC
 /*
  * Prevent execution of subsequent instructions until preceding branches have
  * been fully resolved and are no longer executing speculatively.
@@ -87,10 +87,10 @@ do {									\
 // This also acts as a compiler barrier due to the memory clobber.
 #define barrier_nospec() asm (stringify_in_c(barrier_nospec_asm) ::: "memory")
 
-#else /* !CONFIG_PPC_BOOK3S_64 */
+#else /* !CONFIG_PPC_BARRIER_NOSPEC */
 #define barrier_nospec_asm
 #define barrier_nospec()
-#endif
+#endif /* CONFIG_PPC_BARRIER_NOSPEC */
 
 #include <asm-generic/barrier.h>
 
diff --git a/arch/powerpc/include/asm/setup.h b/arch/powerpc/include/asm/setup.h
index 84ae150ce6a6..38525bd2ed65 100644
--- a/arch/powerpc/include/asm/setup.h
+++ b/arch/powerpc/include/asm/setup.h
@@ -55,7 +55,7 @@ void setup_barrier_nospec(void);
 void do_barrier_nospec_fixups(bool enable);
 extern bool barrier_nospec_enabled;
 
-#ifdef CONFIG_PPC_BOOK3S_64
+#ifdef CONFIG_PPC_BARRIER_NOSPEC
 void do_barrier_nospec_fixups_range(bool enable, void *start, void *end);
 #else
 static inline void do_barrier_nospec_fixups_range(bool enable, void *start, void *end) { };
diff --git a/arch/powerpc/kernel/Makefile b/arch/powerpc/kernel/Makefile
index 13885786282b..d80fbf0884ff 100644
--- a/arch/powerpc/kernel/Makefile
+++ b/arch/powerpc/kernel/Makefile
@@ -44,9 +44,10 @@ obj-$(CONFIG_PPC64)		+= setup_64.o sys_ppc32.o \
 obj-$(CONFIG_VDSO32)		+= vdso32/
 obj-$(CONFIG_HAVE_HW_BREAKPOINT)	+= hw_breakpoint.o
 obj-$(CONFIG_PPC_BOOK3S_64)	+= cpu_setup_ppc970.o cpu_setup_pa6t.o
-obj-$(CONFIG_PPC_BOOK3S_64)	+= cpu_setup_power.o security.o
+obj-$(CONFIG_PPC_BOOK3S_64)	+= cpu_setup_power.o
 obj-$(CONFIG_PPC_BOOK3S_64)	+= mce.o mce_power.o
 obj-$(CONFIG_PPC_BOOK3E_64)	+= exceptions-64e.o idle_book3e.o
+obj-$(CONFIG_PPC_BARRIER_NOSPEC) += security.o
 obj-$(CONFIG_PPC64)		+= vdso64/
 obj-$(CONFIG_ALTIVEC)		+= vecemu.o
 obj-$(CONFIG_PPC_970_NAP)	+= idle_power4.o
diff --git a/arch/powerpc/kernel/module.c b/arch/powerpc/kernel/module.c
index d30f0626dcd0..3b1c3bb91025 100644
--- a/arch/powerpc/kernel/module.c
+++ b/arch/powerpc/kernel/module.c
@@ -72,13 +72,15 @@ int module_finalize(const Elf_Ehdr *hdr,
 		do_feature_fixups(powerpc_firmware_features,
 				  (void *)sect->sh_addr,
 				  (void *)sect->sh_addr + sect->sh_size);
+#endif /* CONFIG_PPC64 */
 
+#ifdef CONFIG_PPC_BARRIER_NOSPEC
 	sect = find_section(hdr, sechdrs, "__spec_barrier_fixup");
 	if (sect != NULL)
 		do_barrier_nospec_fixups_range(barrier_nospec_enabled,
 				  (void *)sect->sh_addr,
 				  (void *)sect->sh_addr + sect->sh_size);
-#endif
+#endif /* CONFIG_PPC_BARRIER_NOSPEC */
 
 	sect = find_section(hdr, sechdrs, "__lwsync_fixup");
 	if (sect != NULL)
diff --git a/arch/powerpc/kernel/vmlinux.lds.S b/arch/powerpc/kernel/vmlinux.lds.S
index 61def0be6914..5c6cf58943b9 100644
--- a/arch/powerpc/kernel/vmlinux.lds.S
+++ b/arch/powerpc/kernel/vmlinux.lds.S
@@ -153,14 +153,16 @@ SECTIONS
 		*(__rfi_flush_fixup)
 		__stop___rfi_flush_fixup = .;
 	}
+#endif /* CONFIG_PPC64 */
 
+#ifdef CONFIG_PPC_BARRIER_NOSPEC
 	. = ALIGN(8);
 	__spec_barrier_fixup : AT(ADDR(__spec_barrier_fixup) - LOAD_OFFSET) {
 		__start___barrier_nospec_fixup = .;
 		*(__barrier_nospec_fixup)
 		__stop___barrier_nospec_fixup = .;
 	}
-#endif
+#endif /* CONFIG_PPC_BARRIER_NOSPEC */
 
 	EXCEPTION_TABLE(0)
 
diff --git a/arch/powerpc/lib/feature-fixups.c b/arch/powerpc/lib/feature-fixups.c
index a1222c441df5..5df57f7bae0a 100644
--- a/arch/powerpc/lib/feature-fixups.c
+++ b/arch/powerpc/lib/feature-fixups.c
@@ -304,6 +304,9 @@ void do_barrier_nospec_fixups_range(bool enable, void *fixup_start, void *fixup_
 	printk(KERN_DEBUG "barrier-nospec: patched %d locations\n", i);
 }
 
+#endif /* CONFIG_PPC_BOOK3S_64 */
+
+#ifdef CONFIG_PPC_BARRIER_NOSPEC
 void do_barrier_nospec_fixups(bool enable)
 {
 	void *start, *end;
@@ -313,8 +316,7 @@ void do_barrier_nospec_fixups(bool enable)
 
 	do_barrier_nospec_fixups_range(enable, start, end);
 }
-
-#endif /* CONFIG_PPC_BOOK3S_64 */
+#endif /* CONFIG_PPC_BARRIER_NOSPEC */
 
 void do_lwsync_fixups(unsigned long value, void *fixup_start, void *fixup_end)
 {
-- 
2.19.1




  parent reply	other threads:[~2019-04-15 18:45 UTC|newest]

Thread overview: 103+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-04-15 18:43 [PATCH 4.9 00/76] 4.9.169-stable review Greg Kroah-Hartman
2019-04-15 18:43 ` [PATCH 4.9 01/76] x86/power: Fix some ordering bugs in __restore_processor_context() Greg Kroah-Hartman
2019-04-15 18:43 ` [PATCH 4.9 02/76] x86/power/64: Use struct desc_ptr for the IDT in struct saved_context Greg Kroah-Hartman
2019-04-15 18:43 ` [PATCH 4.9 03/76] x86/power/32: Move SYSENTER MSR restoration to fix_processor_context() Greg Kroah-Hartman
2019-04-15 18:43 ` [PATCH 4.9 04/76] x86/power: Make restore_processor_context() sane Greg Kroah-Hartman
2019-04-15 18:43 ` [PATCH 4.9 05/76] powerpc/tm: Limit TM code inside PPC_TRANSACTIONAL_MEM Greg Kroah-Hartman
2019-04-15 18:43 ` [PATCH 4.9 06/76] kbuild: clang: choose GCC_TOOLCHAIN_DIR not on LD Greg Kroah-Hartman
2019-04-15 18:43 ` [PATCH 4.9 07/76] x86: vdso: Use $LD instead of $CC to link Greg Kroah-Hartman
2019-04-15 18:43 ` [PATCH 4.9 08/76] x86/vdso: Drop implicit common-page-size linker flag Greg Kroah-Hartman
2019-04-15 18:43 ` [PATCH 4.9 09/76] lib/string.c: implement a basic bcmp Greg Kroah-Hartman
2019-04-15 18:43 ` [PATCH 4.9 10/76] powerpc: Fix invalid use of register expressions Greg Kroah-Hartman
2019-04-15 18:43 ` [PATCH 4.9 11/76] powerpc/64s: Add barrier_nospec Greg Kroah-Hartman
2019-04-15 18:43 ` [PATCH 4.9 12/76] powerpc/64s: Add support for ori barrier_nospec patching Greg Kroah-Hartman
2019-04-15 18:43 ` [PATCH 4.9 13/76] powerpc: Avoid code patching freed init sections Greg Kroah-Hartman
2019-04-15 18:43 ` [PATCH 4.9 14/76] powerpc/64s: Patch barrier_nospec in modules Greg Kroah-Hartman
2019-04-15 18:43 ` [PATCH 4.9 15/76] powerpc/64s: Enable barrier_nospec based on firmware settings Greg Kroah-Hartman
2019-04-15 18:43 ` [PATCH 4.9 16/76] powerpc: Use barrier_nospec in copy_from_user() Greg Kroah-Hartman
2019-04-15 18:43 ` [PATCH 4.9 17/76] powerpc/64: Use barrier_nospec in syscall entry Greg Kroah-Hartman
2019-04-15 18:43 ` [PATCH 4.9 18/76] powerpc/64s: Enhance the information in cpu_show_spectre_v1() Greg Kroah-Hartman
2019-04-15 18:43 ` [PATCH 4.9 19/76] powerpc64s: Show ori31 availability in spectre_v1 sysfs file not v2 Greg Kroah-Hartman
2019-04-15 18:43 ` [PATCH 4.9 20/76] powerpc/64: Disable the speculation barrier from the command line Greg Kroah-Hartman
2019-04-16 15:43   ` Diana Madalina Craciun
2019-04-16 18:46     ` Greg Kroah-Hartman
2019-04-17  8:41     ` Michael Ellerman
2019-04-15 18:43 ` [PATCH 4.9 21/76] powerpc/64: Make stf barrier PPC_BOOK3S_64 specific Greg Kroah-Hartman
2019-04-15 18:43 ` Greg Kroah-Hartman [this message]
2019-04-15 18:43 ` [PATCH 4.9 23/76] powerpc/64: Call setup_barrier_nospec() from setup_arch() Greg Kroah-Hartman
2019-04-15 18:43 ` [PATCH 4.9 24/76] powerpc/64: Make meltdown reporting Book3S 64 specific Greg Kroah-Hartman
2019-04-15 18:43 ` [PATCH 4.9 25/76] powerpc/fsl: Add barrier_nospec implementation for NXP PowerPC Book3E Greg Kroah-Hartman
2019-04-15 18:43 ` [PATCH 4.9 26/76] powerpc/fsl: Sanitize the syscall table for NXP PowerPC 32 bit platforms Greg Kroah-Hartman
2019-04-15 18:43 ` [PATCH 4.9 27/76] powerpc/asm: Add a patch_site macro & helpers for patching instructions Greg Kroah-Hartman
2019-04-15 18:43 ` [PATCH 4.9 28/76] powerpc/64s: Add new security feature flags for count cache flush Greg Kroah-Hartman
2019-04-15 18:43 ` [PATCH 4.9 29/76] powerpc/64s: Add support for software " Greg Kroah-Hartman
2019-04-15 18:43 ` [PATCH 4.9 30/76] powerpc/pseries: Query hypervisor for count cache flush settings Greg Kroah-Hartman
2019-04-15 18:43 ` [PATCH 4.9 31/76] powerpc/powernv: Query firmware " Greg Kroah-Hartman
2019-04-15 18:43 ` [PATCH 4.9 32/76] powerpc/fsl: Add infrastructure to fixup branch predictor flush Greg Kroah-Hartman
2019-04-15 18:43 ` [PATCH 4.9 33/76] powerpc/fsl: Add macro to flush the branch predictor Greg Kroah-Hartman
2019-04-15 18:43 ` [PATCH 4.9 34/76] powerpc/fsl: Fix spectre_v2 mitigations reporting Greg Kroah-Hartman
2019-04-15 18:43 ` [PATCH 4.9 35/76] powerpc/fsl: Emulate SPRN_BUCSR register Greg Kroah-Hartman
2019-04-15 18:44 ` [PATCH 4.9 36/76] powerpc/fsl: Add nospectre_v2 command line argument Greg Kroah-Hartman
2019-04-15 18:44 ` [PATCH 4.9 37/76] powerpc/fsl: Flush the branch predictor at each kernel entry (64bit) Greg Kroah-Hartman
2019-04-15 18:44 ` [PATCH 4.9 38/76] powerpc/fsl: Flush the branch predictor at each kernel entry (32 bit) Greg Kroah-Hartman
2019-04-15 18:44 ` [PATCH 4.9 39/76] powerpc/fsl: Flush branch predictor when entering KVM Greg Kroah-Hartman
2019-04-15 18:44 ` [PATCH 4.9 40/76] powerpc/fsl: Enable runtime patching if nospectre_v2 boot arg is used Greg Kroah-Hartman
2019-04-15 18:44 ` [PATCH 4.9 41/76] powerpc/fsl: Update Spectre v2 reporting Greg Kroah-Hartman
2019-04-15 18:44 ` [PATCH 4.9 42/76] powerpc/fsl: Fixed warning: orphan section `__btb_flush_fixup Greg Kroah-Hartman
2019-04-15 18:44 ` [PATCH 4.9 43/76] powerpc/fsl: Fix the flush of branch predictor Greg Kroah-Hartman
2019-04-15 18:44 ` [PATCH 4.9 44/76] powerpc/security: Fix spectre_v2 reporting Greg Kroah-Hartman
2019-04-15 18:44 ` [PATCH 4.9 45/76] arm64: kaslr: Reserve size of ARM64_MEMSTART_ALIGN in linear region Greg Kroah-Hartman
2019-04-15 18:44 ` [PATCH 4.9 46/76] tty: mark Siemens R3964 line discipline as BROKEN Greg Kroah-Hartman
2019-04-15 18:44 ` [PATCH 4.9 47/76] tty: ldisc: add sysctl to prevent autoloading of ldiscs Greg Kroah-Hartman
2019-04-15 18:44 ` [PATCH 4.9 48/76] ipv6: Fix dangling pointer when ipv6 fragment Greg Kroah-Hartman
2019-04-15 18:44 ` [PATCH 4.9 49/76] ipv6: sit: reset ip header pointer in ipip6_rcv Greg Kroah-Hartman
2019-04-15 18:44 ` [PATCH 4.9 50/76] kcm: switch order of device registration to fix a crash Greg Kroah-Hartman
2019-04-15 18:44 ` [PATCH 4.9 51/76] net: rds: force to destroy connection if t_sock is NULL in rds_tcp_kill_sock() Greg Kroah-Hartman
2019-04-15 18:44 ` [PATCH 4.9 52/76] openvswitch: fix flow actions reallocation Greg Kroah-Hartman
2019-04-15 18:44 ` [PATCH 4.9 53/76] qmi_wwan: add Olicard 600 Greg Kroah-Hartman
2019-04-15 18:44 ` [PATCH 4.9 54/76] sctp: initialize _pad of sockaddr_in before copying to user memory Greg Kroah-Hartman
2019-04-15 18:44 ` [PATCH 4.9 55/76] tcp: Ensure DCTCP reacts to losses Greg Kroah-Hartman
2019-04-15 18:44 ` [PATCH 4.9 56/76] vrf: check accept_source_route on the original netdevice Greg Kroah-Hartman
2019-04-15 18:44 ` [PATCH 4.9 57/76] bnxt_en: Reset device on RX buffer errors Greg Kroah-Hartman
2019-04-15 18:44 ` [PATCH 4.9 58/76] bnxt_en: Improve RX consumer index validity check Greg Kroah-Hartman
2019-04-15 18:44 ` [PATCH 4.9 59/76] net/mlx5e: Add a lock on tir list Greg Kroah-Hartman
2019-04-15 18:44 ` [PATCH 4.9 60/76] netns: provide pure entropy for net_hash_mix() Greg Kroah-Hartman
2019-04-15 18:44 ` [PATCH 4.9 61/76] net: ethtool: not call vzalloc for zero sized memory request Greg Kroah-Hartman
2019-04-15 18:44 ` [PATCH 4.9 62/76] ip6_tunnel: Match to ARPHRD_TUNNEL6 for dev type Greg Kroah-Hartman
2019-04-15 18:44 ` [PATCH 4.9 63/76] ALSA: seq: Fix OOB-reads from strlcpy Greg Kroah-Hartman
2019-04-15 18:44 ` [PATCH 4.9 64/76] parisc: Detect QEMU earlier in boot process Greg Kroah-Hartman
2019-04-16 13:49   ` Helge Deller
2019-04-16 13:50   ` Helge Deller
2019-04-16 14:23     ` Greg Kroah-Hartman
2019-04-16 15:00       ` Helge Deller
2019-04-16 18:03         ` Greg Kroah-Hartman
2019-04-15 18:44 ` [PATCH 4.9 65/76] include/linux/bitrev.h: fix constant bitrev Greg Kroah-Hartman
2019-04-15 18:44 ` [PATCH 4.9 66/76] ASoC: fsl_esai: fix channel swap issue when stream starts Greg Kroah-Hartman
2019-04-15 18:44 ` [PATCH 4.9 67/76] Btrfs: do not allow trimming when a fs is mounted with the nologreplay option Greg Kroah-Hartman
2019-04-15 18:44 ` [PATCH 4.9 68/76] block: do not leak memory in bio_copy_user_iov() Greg Kroah-Hartman
2019-04-15 18:44 ` [PATCH 4.9 69/76] genirq: Respect IRQCHIP_SKIP_SET_WAKE in irq_chip_set_wake_parent() Greg Kroah-Hartman
2019-04-15 18:44 ` [PATCH 4.9 70/76] virtio: Honour may_reduce_num in vring_create_virtqueue Greg Kroah-Hartman
2019-04-15 18:44 ` [PATCH 4.9 71/76] ARM: dts: at91: Fix typo in ISC_D0 on PC9 Greg Kroah-Hartman
2019-04-15 18:44 ` [PATCH 4.9 72/76] arm64: futex: Fix FUTEX_WAKE_OP atomic ops with non-zero result value Greg Kroah-Hartman
2019-04-15 22:01   ` Nathan Chancellor
2019-04-16  9:00     ` Greg Kroah-Hartman
2019-04-16 16:47       ` Nathan Chancellor
2019-04-17  6:15         ` Greg Kroah-Hartman
2019-04-17  6:41           ` Nathan Chancellor
2019-04-17  6:47             ` Greg Kroah-Hartman
2019-04-16  9:13     ` Will Deacon
2019-04-16 16:49       ` Nathan Chancellor
2019-04-15 18:44 ` [PATCH 4.9 73/76] xen: Prevent buffer overflow in privcmd ioctl Greg Kroah-Hartman
2019-04-15 18:44 ` [PATCH 4.9 74/76] sched/fair: Do not re-read ->h_load_next during hierarchical load calculation Greg Kroah-Hartman
2019-04-15 18:44 ` [PATCH 4.9 75/76] xtensa: fix return_address Greg Kroah-Hartman
2019-04-15 18:44 ` [PATCH 4.9 76/76] PCI: Add function 1 DMA alias quirk for Marvell 9170 SATA controller Greg Kroah-Hartman
2019-04-16  0:44 ` [PATCH 4.9 00/76] 4.9.169-stable review kernelci.org bot
2019-04-16  4:06 ` Naresh Kamboju
2019-04-16 10:33 ` Jon Hunter
2019-04-16 13:12 ` Guenter Roeck
2019-04-16 16:29 ` Guenter Roeck
2019-04-16 18:46   ` Greg Kroah-Hartman
2019-04-16 20:19     ` Guenter Roeck
2019-04-16 20:27       ` Greg Kroah-Hartman
2019-04-16 21:39 ` shuah
2019-04-16 22:05 ` Bharath Vedartham

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=20190415183713.670291331@linuxfoundation.org \
    --to=gregkh@linuxfoundation.org \
    --cc=diana.craciun@nxp.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mpe@ellerman.id.au \
    --cc=sashal@kernel.org \
    --cc=stable@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).