Module Name:    src
Committed By:   maxv
Date:           Tue Mar 20 14:26:49 UTC 2018

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

Log Message:
Remove the sysretq fault handler. It is broken with SVS, and not really
needed anyway. Initially I had added it so that if such a fault was
received the kernel would panic "cleanly" instead of crashing in a
potentially undefined way.

I'll re-add this handler later.


To generate a diff of this commit:
cvs rdiff -u -r1.37 -r1.38 src/sys/arch/amd64/amd64/amd64_trap.S
cvs rdiff -u -r1.157 -r1.158 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/amd64_trap.S
diff -u src/sys/arch/amd64/amd64/amd64_trap.S:1.37 src/sys/arch/amd64/amd64/amd64_trap.S:1.38
--- src/sys/arch/amd64/amd64/amd64_trap.S:1.37	Sun Feb 25 12:37:16 2018
+++ src/sys/arch/amd64/amd64/amd64_trap.S	Tue Mar 20 14:26:49 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: amd64_trap.S,v 1.37 2018/02/25 12:37:16 maxv Exp $	*/
+/*	$NetBSD: amd64_trap.S,v 1.38 2018/03/20 14:26:49 maxv Exp $	*/
 
 /*
  * Copyright (c) 1998, 2007, 2008, 2017 The NetBSD Foundation, Inc.
@@ -377,9 +377,8 @@ IDTVEC_END(intrspurious)
 
 /*
  * It is possible that we received a trap in kernel mode, but with the user
- * context loaded. There are six cases where this can happen:
+ * context loaded. There are five cases where this can happen:
  *
- *  o Execution of SYSRETQ.
  *  o Execution of IRETQ.
  *  o Reload of ES.
  *  o Reload of DS.
@@ -446,12 +445,7 @@ LABEL(kernuser_reenter)
 	/* We will clobber %rdi */
 	pushq	%rdi
 
-	/* Case 1: fault on sysretq? */
-	leaq	do_sysret(%rip),%rdi
-	cmpq	%rdi,TF_SMALL_REGPUSHED(TF_RIP, %rsp)
-	je	.Lkernelmode_but_user
-
-	/* Case 2: fault on iretq? */
+	/* Case 1: fault on iretq? */
 	leaq	do_iret(%rip),%rdi
 	cmpq	%rdi,TF_SMALL_REGPUSHED(TF_RIP, %rsp)
 	jne	5f
@@ -461,22 +455,22 @@ LABEL(kernuser_reenter)
 	jmp	.Lkernelmode_but_user	/* to user - must restore %gs */
 5:
 
-	/* Case 3: move to %es? */
+	/* Case 2: move to %es? */
 	leaq	do_mov_es(%rip),%rdi
 	cmpq	%rdi,TF_SMALL_REGPUSHED(TF_RIP, %rsp)
 	je	.Lkernelmode_but_user
 
-	/* Case 4: move to %ds? */
+	/* Case 3: move to %ds? */
 	leaq	do_mov_ds(%rip),%rdi
 	cmpq	%rdi,TF_SMALL_REGPUSHED(TF_RIP, %rsp)
 	je	.Lkernelmode_but_user
 
-	/* Case 5: move to %fs? */
+	/* Case 4: move to %fs? */
 	leaq	do_mov_fs(%rip),%rdi
 	cmpq	%rdi,TF_SMALL_REGPUSHED(TF_RIP, %rsp)
 	je	.Lkernelmode_but_user
 
-	/* Case 6: move to %gs? */
+	/* Case 5: move to %gs? */
 	leaq	do_mov_gs(%rip),%rdi
 	cmpq	%rdi,TF_SMALL_REGPUSHED(TF_RIP, %rsp)
 	je	.Lkernelmode_but_user

Index: src/sys/arch/amd64/amd64/locore.S
diff -u src/sys/arch/amd64/amd64/locore.S:1.157 src/sys/arch/amd64/amd64/locore.S:1.158
--- src/sys/arch/amd64/amd64/locore.S:1.157	Sun Feb 25 12:37:16 2018
+++ src/sys/arch/amd64/amd64/locore.S	Tue Mar 20 14:26:49 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: locore.S,v 1.157 2018/02/25 12:37:16 maxv Exp $	*/
+/*	$NetBSD: locore.S,v 1.158 2018/03/20 14:26:49 maxv Exp $	*/
 
 /*
  * Copyright-o-rama!
@@ -330,7 +330,6 @@
 	.globl	_C_LABEL(biosbasemem)
 	.globl	_C_LABEL(biosextmem)
 	.globl	_C_LABEL(lwp0uarea)
-	.globl	do_sysret
 	.globl	do_mov_es
 	.globl	do_mov_ds
 	.globl	do_mov_fs
@@ -1471,7 +1470,6 @@ LABEL(syscall_sysret)
 	movq	TF_RIP(%rsp),%rcx	/* %rip for sysret */
 	movq	TF_RFLAGS(%rsp),%r11	/* %flags for sysret */
 	movq	TF_RSP(%rsp),%rsp
-do_sysret:
 	sysretq
 #else
 	addq	$TF_RIP,%rsp

Reply via email to