Module Name:    src
Committed By:   maxv
Date:           Mon Jul  9 18:43:05 UTC 2018

Modified Files:
        src/sys/arch/amd64/amd64: locore.S

Log Message:
Small optimization: don't execute the Meltdown/SpectreV2 cswitch code if
we're leaving a softint. We were executing the softint with the LWP's
context, so no need to switch the SVS/IBRS contexts, we already are in
the desired contexts.


To generate a diff of this commit:
cvs rdiff -u -r1.167 -r1.168 src/sys/arch/amd64/amd64/locore.S

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/amd64/amd64/locore.S
diff -u src/sys/arch/amd64/amd64/locore.S:1.167 src/sys/arch/amd64/amd64/locore.S:1.168
--- src/sys/arch/amd64/amd64/locore.S:1.167	Fri Jun 29 19:21:43 2018
+++ src/sys/arch/amd64/amd64/locore.S	Mon Jul  9 18:43:05 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: locore.S,v 1.167 2018/06/29 19:21:43 maxv Exp $	*/
+/*	$NetBSD: locore.S,v 1.168 2018/07/09 18:43:05 maxv Exp $	*/
 
 /*
  * Copyright-o-rama!
@@ -1088,26 +1088,6 @@ ENTRY(cpu_switchto)
 	movq	%rbp,PCB_RBP(%rax)
 .Lskip_save:
 
-#ifdef SVS
-	pushq	%rdx
-	movb	_C_LABEL(svs_enabled),%dl
-	testb	%dl,%dl
-	jz	.Lskip_svs
-	callq	_C_LABEL(svs_lwp_switch)
-.Lskip_svs:
-	popq	%rdx
-
-	/* RDI/RSI got clobbered. */
-	movq	%r13,%rdi
-	movq	%r12,%rsi
-#endif
-
-#ifndef XEN
-	pushq	%rdx
-	callq	_C_LABEL(speculation_barrier)
-	popq	%rdx
-#endif
-
 	/* Switch to newlwp's stack. */
 	movq	L_PCB(%r12),%r14
 	movq	PCB_RSP(%r14),%rsp
@@ -1124,6 +1104,24 @@ ENTRY(cpu_switchto)
 	testb	%dl,%dl		/* returning = true ? */
 	jnz	.Lswitch_return
 
+#ifdef SVS
+	pushq	%rdx
+	movb	_C_LABEL(svs_enabled),%dl
+	testb	%dl,%dl
+	jz	.Lskip_svs
+	callq	_C_LABEL(svs_lwp_switch)
+.Lskip_svs:
+	popq	%rdx
+#endif
+
+#ifndef XEN
+	pushq	%rdx
+	movq	%r13,%rdi
+	movq	%r12,%rsi
+	callq	_C_LABEL(speculation_barrier)
+	popq	%rdx
+#endif
+
 	/* Switch ring0 stack */
 #ifdef SVS
 	movb	_C_LABEL(svs_enabled),%al

Reply via email to