Thread (17 messages) flat view 17 messages, 3 authors, 2017-11-10

Re: [RFC PATCH for 4.15 05/10] x86: Introduce sync_core_before_usermode

From: Andy Lutomirski <luto@amacapital.net>
Date: 2017-11-10 22:37:05
Also in: linux-arch, lkml


On Nov 10, 2017, at 2:20 PM, Mathieu Desnoyers [off-list ref] wrote:

----- On Nov 10, 2017, at 5:02 PM, Andy Lutomirski luto@kernel.org wrote:
quoted
On Fri, Nov 10, 2017 at 1:37 PM, Mathieu Desnoyers
[off-list ref] wrote:
quoted
Introduce an architecture function that ensures the current CPU
issues a core serializing instruction before returning to usermode.

This is needed to fix an existing core serialization bug on
thread migration, and also needed by the membarrier "sync_core" command.

Architectures defining the sync_core_before_usermode() static inline
need to define ARCH_HAS_SYNC_CORE_BEFORE_USERMODE.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
CC: Peter Zijlstra <peterz@infradead.org>
CC: Andy Lutomirski <luto@kernel.org>
CC: Paul E. McKenney <redacted>
CC: Boqun Feng <redacted>
CC: Andrew Hunter <redacted>
CC: Maged Michael <redacted>
CC: Avi Kivity <redacted>
CC: Benjamin Herrenschmidt <benh@kernel.crashing.org>
CC: Paul Mackerras <redacted>
CC: Michael Ellerman <mpe@ellerman.id.au>
CC: Dave Watson <redacted>
CC: Thomas Gleixner <redacted>
CC: Ingo Molnar <mingo@redhat.com>
CC: "H. Peter Anvin" <hpa@zytor.com>
CC: Andrea Parri <parri.andrea@gmail.com>
CC: Russell King <linux@armlinux.org.uk>
CC: Greg Hackmann <redacted>
CC: Will Deacon <redacted>
CC: David Sehr <redacted>
CC: Linus Torvalds <torvalds@linux-foundation.org>
CC: x86@kernel.org
CC: linux-arch@vger.kernel.org
---
arch/x86/Kconfig                 |  1 +
arch/x86/include/asm/processor.h | 10 ++++++++++
include/linux/processor.h        |  6 ++++++
3 files changed, 17 insertions(+)
diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
index 01f78c1d40b5..54fbb8960d94 100644
--- a/arch/x86/Kconfig
+++ b/arch/x86/Kconfig
@@ -62,6 +62,7 @@ config X86
       select ARCH_HAS_SG_CHAIN
       select ARCH_HAS_STRICT_KERNEL_RWX
       select ARCH_HAS_STRICT_MODULE_RWX
+       select ARCH_HAS_SYNC_CORE_BEFORE_USERMODE
       select ARCH_HAS_UBSAN_SANITIZE_ALL
       select ARCH_HAS_ZONE_DEVICE             if X86_64
       select ARCH_HAVE_NMI_SAFE_CMPXCHG
diff --git a/arch/x86/include/asm/processor.h b/arch/x86/include/asm/processor.h
index bdac19ab2488..6ce996a7c730 100644
--- a/arch/x86/include/asm/processor.h
+++ b/arch/x86/include/asm/processor.h
@@ -706,6 +706,16 @@ static inline void sync_core(void)
#endif
}

+/*
+ * Ensure that a core serializing instruction is issued before returning
+ * to user-mode. x86 implements return to user-space through sysexit and
+ * sysretq, which are not core serializing.
+ */
+static inline void sync_core_before_usermode(void)
+{
+       sync_core();
+}
Make this if (!in_interrupt()) sync_core(); please.  We can optimize
it better later on.
Sure, done. It will be part of the next version of that patch.

Thanks!
Hmm.  Can you also cc stable and make sure it applies by itself?
Mathieu


-- 
Mathieu Desnoyers
EfficiOS Inc.
http://www.efficios.com
--
To unsubscribe from this list: send the line "unsubscribe linux-api" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help