Module Name:    src
Committed By:   maxv
Date:           Sun Jul 19 07:35:08 UTC 2020

Modified Files:
        src/sys/arch/amd64/amd64: cpufunc.S
        src/sys/arch/amd64/include: frameasm.h
        src/sys/arch/i386/i386: cpufunc.S
        src/sys/arch/x86/include: pmap.h
        src/sys/arch/x86/x86: svs.c

Log Message:
Revert most of ad's movs/stos change. Instead do a lot simpler: declare
svs_quad_copy() used by SVS only, with no need for instrumentation, because
SVS is disabled when sanitizers are on.


To generate a diff of this commit:
cvs rdiff -u -r1.63 -r1.64 src/sys/arch/amd64/amd64/cpufunc.S
cvs rdiff -u -r1.51 -r1.52 src/sys/arch/amd64/include/frameasm.h
cvs rdiff -u -r1.48 -r1.49 src/sys/arch/i386/i386/cpufunc.S
cvs rdiff -u -r1.124 -r1.125 src/sys/arch/x86/include/pmap.h
cvs rdiff -u -r1.38 -r1.39 src/sys/arch/x86/x86/svs.c

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/cpufunc.S
diff -u src/sys/arch/amd64/amd64/cpufunc.S:1.63 src/sys/arch/amd64/amd64/cpufunc.S:1.64
--- src/sys/arch/amd64/amd64/cpufunc.S:1.63	Wed Jun 24 18:09:37 2020
+++ src/sys/arch/amd64/amd64/cpufunc.S	Sun Jul 19 07:35:08 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: cpufunc.S,v 1.63 2020/06/24 18:09:37 maxv Exp $	*/
+/*	$NetBSD: cpufunc.S,v 1.64 2020/07/19 07:35:08 maxv Exp $	*/
 
 /*
  * Copyright (c) 1998, 2007, 2008, 2020 The NetBSD Foundation, Inc.
@@ -446,10 +446,13 @@ ENTRY(outl)
 	ret
 END(outl)
 
-ENTRY(x86_movs)
+/*
+ * Used by SVS only, to make an atomic but fast copy. Doesn't have
+ * sanitizer instrumentation, but sanitizers disable SVS, so no problem.
+ */
+ENTRY(svs_quad_copy)
 	movq	%rdx,%rcx
-	KMSAN_REP_STOS(8)
 	rep
 	movsq
 	ret
-END(x86_movs)
+END(svs_quad_copy)

Index: src/sys/arch/amd64/include/frameasm.h
diff -u src/sys/arch/amd64/include/frameasm.h:1.51 src/sys/arch/amd64/include/frameasm.h:1.52
--- src/sys/arch/amd64/include/frameasm.h:1.51	Sun Jun 21 16:53:37 2020
+++ src/sys/arch/amd64/include/frameasm.h	Sun Jul 19 07:35:08 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: frameasm.h,v 1.51 2020/06/21 16:53:37 bouyer Exp $	*/
+/*	$NetBSD: frameasm.h,v 1.52 2020/07/19 07:35:08 maxv Exp $	*/
 
 #ifndef _AMD64_MACHINE_FRAMEASM_H
 #define _AMD64_MACHINE_FRAMEASM_H
@@ -276,33 +276,11 @@
 	popq	%rdx			; \
 	popq	%rcx			; \
 	popq	%rax
-#define KMSAN_REP_STOS(scale)	\
-	pushq	%rax			; \
-	pushq	%rcx			; \
-	pushq	%rdx			; \
-	pushq	%rsi			; \
-	pushq	%rdi			; \
-	pushq	%r8			; \
-	pushq	%r9			; \
-	pushq	%r10			; \
-	pushq	%r11			; \
-	leaq	(,%rcx,scale),%rsi	; \
-	callq	_C_LABEL(__msan_instrument_asm_store); \
-	popq	%r11			; \
-	popq	%r10			; \
-	popq	%r9			; \
-	popq	%r8			; \
-	popq	%rdi			; \
-	popq	%rsi			; \
-	popq	%rdx			; \
-	popq	%rcx			; \
-	popq	%rax
 #else
 #define KMSAN_ENTER		/* nothing */
 #define KMSAN_LEAVE		/* nothing */
 #define KMSAN_INIT_ARG(sz)	/* nothing */
 #define KMSAN_INIT_RET(sz)	/* nothing */
-#define	KMSAN_REP_STOS(scale)	/* nothing */
 #endif
 
 #ifdef KCOV

Index: src/sys/arch/i386/i386/cpufunc.S
diff -u src/sys/arch/i386/i386/cpufunc.S:1.48 src/sys/arch/i386/i386/cpufunc.S:1.49
--- src/sys/arch/i386/i386/cpufunc.S:1.48	Wed Jun 24 18:09:37 2020
+++ src/sys/arch/i386/i386/cpufunc.S	Sun Jul 19 07:35:08 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: cpufunc.S,v 1.48 2020/06/24 18:09:37 maxv Exp $	*/
+/*	$NetBSD: cpufunc.S,v 1.49 2020/07/19 07:35:08 maxv Exp $	*/
 
 /*-
  * Copyright (c) 1998, 2007, 2020 The NetBSD Foundation, Inc.
@@ -38,7 +38,7 @@
 #include <sys/errno.h>
 
 #include <machine/asm.h>
-__KERNEL_RCSID(0, "$NetBSD: cpufunc.S,v 1.48 2020/06/24 18:09:37 maxv Exp $");
+__KERNEL_RCSID(0, "$NetBSD: cpufunc.S,v 1.49 2020/07/19 07:35:08 maxv Exp $");
 
 #include "opt_xen.h"
 
@@ -353,19 +353,3 @@ ENTRY(outl)
 	outl	%eax, %dx
 	ret
 END(outl)
-
-ENTRY(x86_movs)
-	pushl	%ebp
-	movl	%esp,%ebp
-	pushl	%edi
-	pushl	%esi
-	movl	8(%ebp),%edi
-	movl	12(%ebp),%esi
-	movl	16(%ebp),%ecx
-	rep
-	movsl
-	popl	%esi
-	popl	%edi
-	leave
-	ret
-END(x86_movs)

Index: src/sys/arch/x86/include/pmap.h
diff -u src/sys/arch/x86/include/pmap.h:1.124 src/sys/arch/x86/include/pmap.h:1.125
--- src/sys/arch/x86/include/pmap.h:1.124	Tue Jul 14 00:45:53 2020
+++ src/sys/arch/x86/include/pmap.h	Sun Jul 19 07:35:08 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap.h,v 1.124 2020/07/14 00:45:53 yamaguchi Exp $	*/
+/*	$NetBSD: pmap.h,v 1.125 2020/07/19 07:35:08 maxv Exp $	*/
 
 /*
  * Copyright (c) 1997 Charles D. Cranor and Washington University.
@@ -612,7 +612,7 @@ extern vaddr_t pmap_direct_end;
 
 #endif /* __HAVE_DIRECT_MAP */
 
-void	x86_movs(void *, void *, long);
+void	svs_quad_copy(void *, void *, long);
 
 #endif /* _KERNEL */
 

Index: src/sys/arch/x86/x86/svs.c
diff -u src/sys/arch/x86/x86/svs.c:1.38 src/sys/arch/x86/x86/svs.c:1.39
--- src/sys/arch/x86/x86/svs.c:1.38	Tue Jul 14 00:45:53 2020
+++ src/sys/arch/x86/x86/svs.c	Sun Jul 19 07:35:08 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: svs.c,v 1.38 2020/07/14 00:45:53 yamaguchi Exp $	*/
+/*	$NetBSD: svs.c,v 1.39 2020/07/19 07:35:08 maxv Exp $	*/
 
 /*
  * Copyright (c) 2018-2020 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: svs.c,v 1.38 2020/07/14 00:45:53 yamaguchi Exp $");
+__KERNEL_RCSID(0, "$NetBSD: svs.c,v 1.39 2020/07/19 07:35:08 maxv Exp $");
 
 #include "opt_svs.h"
 #include "opt_user_ldt.h"
@@ -704,7 +704,7 @@ svs_pdir_switch(struct pmap *pmap)
 
 	/* Copy user slots. */
 	mutex_enter(&ci->ci_svs_mtx);
-	x86_movs(ci->ci_svs_updir, pmap->pm_pdir, PDIR_SLOT_USERLIM);
+	svs_quad_copy(ci->ci_svs_updir, pmap->pm_pdir, PDIR_SLOT_USERLIM);
 	mutex_exit(&ci->ci_svs_mtx);
 
 	if (svs_pcid) {

Reply via email to