Module Name: src
Committed By: ad
Date: Thu Nov 21 19:24:02 UTC 2019
Modified Files:
src/sys/arch/aarch64/aarch64: trap.c
src/sys/arch/aarch64/include: cpu.h
src/sys/arch/alpha/alpha: trap.c
src/sys/arch/amd64/amd64: cpufunc.S trap.c
src/sys/arch/amd64/include: cpu.h
src/sys/arch/amiga/amiga: trap.c
src/sys/arch/arm/arm: ast.c
src/sys/arch/arm/include: cpu.h
src/sys/arch/atari/atari: trap.c
src/sys/arch/cesfic/cesfic: trap.c
src/sys/arch/hp300/hp300: trap.c
src/sys/arch/hppa/hppa: trap.c
src/sys/arch/i386/i386: cpufunc.S trap.c
src/sys/arch/i386/include: cpu.h
src/sys/arch/luna68k/luna68k: trap.c
src/sys/arch/mac68k/mac68k: trap.c
src/sys/arch/mips/include: cpu.h
src/sys/arch/mvme68k/mvme68k: trap.c
src/sys/arch/news68k/news68k: trap.c
src/sys/arch/next68k/next68k: trap.c
src/sys/arch/or1k/include: cpu.h
src/sys/arch/riscv/include: cpu.h
src/sys/arch/riscv/riscv: trap.c
src/sys/arch/sh3/sh3: exception.c
src/sys/arch/sparc/include: userret.h
src/sys/arch/sparc64/sparc64: trap.c
src/sys/arch/sun2/sun2: trap.c
src/sys/arch/sun3/sun3: trap.c
src/sys/arch/usermode/usermode: trap.c
src/sys/arch/vax/vax: trap.c
src/sys/arch/x68k/x68k: trap.c
src/sys/sys: userret.h
Log Message:
mi_userret(): take care of calling preempt(), set spc_curpriority directly,
and remove MD code that does the same.
To generate a diff of this commit:
cvs rdiff -u -r1.19 -r1.20 src/sys/arch/aarch64/aarch64/trap.c
cvs rdiff -u -r1.14 -r1.15 src/sys/arch/aarch64/include/cpu.h
cvs rdiff -u -r1.134 -r1.135 src/sys/arch/alpha/alpha/trap.c
cvs rdiff -u -r1.48 -r1.49 src/sys/arch/amd64/amd64/cpufunc.S
cvs rdiff -u -r1.124 -r1.125 src/sys/arch/amd64/amd64/trap.c
cvs rdiff -u -r1.65 -r1.66 src/sys/arch/amd64/include/cpu.h
cvs rdiff -u -r1.137 -r1.138 src/sys/arch/amiga/amiga/trap.c
cvs rdiff -u -r1.30 -r1.31 src/sys/arch/arm/arm/ast.c
cvs rdiff -u -r1.101 -r1.102 src/sys/arch/arm/include/cpu.h
cvs rdiff -u -r1.115 -r1.116 src/sys/arch/atari/atari/trap.c
cvs rdiff -u -r1.59 -r1.60 src/sys/arch/cesfic/cesfic/trap.c
cvs rdiff -u -r1.153 -r1.154 src/sys/arch/hp300/hp300/trap.c
cvs rdiff -u -r1.111 -r1.112 src/sys/arch/hppa/hppa/trap.c
cvs rdiff -u -r1.37 -r1.38 src/sys/arch/i386/i386/cpufunc.S
cvs rdiff -u -r1.302 -r1.303 src/sys/arch/i386/i386/trap.c
cvs rdiff -u -r1.181 -r1.182 src/sys/arch/i386/include/cpu.h
cvs rdiff -u -r1.71 -r1.72 src/sys/arch/luna68k/luna68k/trap.c
cvs rdiff -u -r1.149 -r1.150 src/sys/arch/mac68k/mac68k/trap.c
cvs rdiff -u -r1.126 -r1.127 src/sys/arch/mips/include/cpu.h
cvs rdiff -u -r1.110 -r1.111 src/sys/arch/mvme68k/mvme68k/trap.c
cvs rdiff -u -r1.71 -r1.72 src/sys/arch/news68k/news68k/trap.c
cvs rdiff -u -r1.90 -r1.91 src/sys/arch/next68k/next68k/trap.c
cvs rdiff -u -r1.2 -r1.3 src/sys/arch/or1k/include/cpu.h
cvs rdiff -u -r1.5 -r1.6 src/sys/arch/riscv/include/cpu.h
cvs rdiff -u -r1.3 -r1.4 src/sys/arch/riscv/riscv/trap.c
cvs rdiff -u -r1.67 -r1.68 src/sys/arch/sh3/sh3/exception.c
cvs rdiff -u -r1.8 -r1.9 src/sys/arch/sparc/include/userret.h
cvs rdiff -u -r1.191 -r1.192 src/sys/arch/sparc64/sparc64/trap.c
cvs rdiff -u -r1.45 -r1.46 src/sys/arch/sun2/sun2/trap.c
cvs rdiff -u -r1.145 -r1.146 src/sys/arch/sun3/sun3/trap.c
cvs rdiff -u -r1.70 -r1.71 src/sys/arch/usermode/usermode/trap.c
cvs rdiff -u -r1.135 -r1.136 src/sys/arch/vax/vax/trap.c
cvs rdiff -u -r1.108 -r1.109 src/sys/arch/x68k/x68k/trap.c
cvs rdiff -u -r1.28 -r1.29 src/sys/sys/userret.h
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/aarch64/aarch64/trap.c
diff -u src/sys/arch/aarch64/aarch64/trap.c:1.19 src/sys/arch/aarch64/aarch64/trap.c:1.20
--- src/sys/arch/aarch64/aarch64/trap.c:1.19 Sat Sep 28 07:06:50 2019
+++ src/sys/arch/aarch64/aarch64/trap.c Thu Nov 21 19:23:58 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: trap.c,v 1.19 2019/09/28 07:06:50 skrll Exp $ */
+/* $NetBSD: trap.c,v 1.20 2019/11/21 19:23:58 ad Exp $ */
/*-
* Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
#include <sys/cdefs.h>
-__KERNEL_RCSID(1, "$NetBSD: trap.c,v 1.19 2019/09/28 07:06:50 skrll Exp $");
+__KERNEL_RCSID(1, "$NetBSD: trap.c,v 1.20 2019/11/21 19:23:58 ad Exp $");
#include "opt_arm_intr_impl.h"
#include "opt_compat_netbsd32.h"
@@ -158,7 +158,6 @@ trap_doast(struct trapframe *tf)
ci->ci_data.cpu_ntrap++;
KDASSERT(ci->ci_cpl == IPL_NONE);
- const int want_resched = ci->ci_want_resched;
#ifdef __HAVE_PREEMPTION
kpreempt_enable();
#endif
@@ -168,9 +167,6 @@ trap_doast(struct trapframe *tf)
ADDUPROF(l);
}
- /* Allow a forced task switch. */
- if (want_resched)
- preempt();
userret(l);
}
Index: src/sys/arch/aarch64/include/cpu.h
diff -u src/sys/arch/aarch64/include/cpu.h:1.14 src/sys/arch/aarch64/include/cpu.h:1.15
--- src/sys/arch/aarch64/include/cpu.h:1.14 Sat Oct 19 18:04:26 2019
+++ src/sys/arch/aarch64/include/cpu.h Thu Nov 21 19:23:58 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: cpu.h,v 1.14 2019/10/19 18:04:26 jmcneill Exp $ */
+/* $NetBSD: cpu.h,v 1.15 2019/11/21 19:23:58 ad Exp $ */
/*-
* Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -118,7 +118,6 @@ curcpu(void)
#define setsoftast(ci) atomic_or_uint(&(ci)->ci_astpending, __BIT(0))
#define cpu_signotify(l) setsoftast((l)->l_cpu)
-void cpu_set_curpri(int);
void cpu_proc_fork(struct proc *, struct proc *);
void cpu_need_proftick(struct lwp *l);
void cpu_boot_secondary_processors(void);
Index: src/sys/arch/alpha/alpha/trap.c
diff -u src/sys/arch/alpha/alpha/trap.c:1.134 src/sys/arch/alpha/alpha/trap.c:1.135
--- src/sys/arch/alpha/alpha/trap.c:1.134 Sat Apr 6 03:06:24 2019
+++ src/sys/arch/alpha/alpha/trap.c Thu Nov 21 19:23:58 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: trap.c,v 1.134 2019/04/06 03:06:24 thorpej Exp $ */
+/* $NetBSD: trap.c,v 1.135 2019/11/21 19:23:58 ad Exp $ */
/*-
* Copyright (c) 2000, 2001 The NetBSD Foundation, Inc.
@@ -93,7 +93,7 @@
#include <sys/cdefs.h> /* RCS ID & Copyright macro defns */
-__KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.134 2019/04/06 03:06:24 thorpej Exp $");
+__KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.135 2019/11/21 19:23:58 ad Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -603,13 +603,6 @@ ast(struct trapframe *framep)
ADDUPROF(l);
}
- if (curcpu()->ci_want_resched) {
- /*
- * We are being preempted.
- */
- preempt();
- }
-
userret(l);
}
Index: src/sys/arch/amd64/amd64/cpufunc.S
diff -u src/sys/arch/amd64/amd64/cpufunc.S:1.48 src/sys/arch/amd64/amd64/cpufunc.S:1.49
--- src/sys/arch/amd64/amd64/cpufunc.S:1.48 Fri Nov 15 09:03:26 2019
+++ src/sys/arch/amd64/amd64/cpufunc.S Thu Nov 21 19:23:58 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: cpufunc.S,v 1.48 2019/11/15 09:03:26 maxv Exp $ */
+/* $NetBSD: cpufunc.S,v 1.49 2019/11/21 19:23:58 ad Exp $ */
/*
* Copyright (c) 1998, 2007, 2008 The NetBSD Foundation, Inc.
@@ -251,11 +251,6 @@ ENTRY(x86_curlwp)
ret
END(x86_curlwp)
-ENTRY(cpu_set_curpri)
- movl %edi, %gs:(CPU_INFO_CURPRIORITY)
- ret
-END(cpu_set_curpri)
-
ENTRY(__byte_swap_u32_variable)
movl %edi, %eax
bswapl %eax
Index: src/sys/arch/amd64/amd64/trap.c
diff -u src/sys/arch/amd64/amd64/trap.c:1.124 src/sys/arch/amd64/amd64/trap.c:1.125
--- src/sys/arch/amd64/amd64/trap.c:1.124 Wed Sep 18 20:18:27 2019
+++ src/sys/arch/amd64/amd64/trap.c Thu Nov 21 19:23:58 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: trap.c,v 1.124 2019/09/18 20:18:27 kamil Exp $ */
+/* $NetBSD: trap.c,v 1.125 2019/11/21 19:23:58 ad Exp $ */
/*
* Copyright (c) 1998, 2000, 2017 The NetBSD Foundation, Inc.
@@ -64,7 +64,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.124 2019/09/18 20:18:27 kamil Exp $");
+__KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.125 2019/11/21 19:23:58 ad Exp $");
#include "opt_ddb.h"
#include "opt_kgdb.h"
@@ -426,10 +426,6 @@ trap(struct trapframe *frame)
l->l_pflag &= ~LP_OWEUPC;
ADDUPROF(l);
}
- /* Allow a forced task switch. */
- if (curcpu()->ci_want_resched) {
- preempt();
- }
goto out;
case T_BOUND|T_USER:
Index: src/sys/arch/amd64/include/cpu.h
diff -u src/sys/arch/amd64/include/cpu.h:1.65 src/sys/arch/amd64/include/cpu.h:1.66
--- src/sys/arch/amd64/include/cpu.h:1.65 Thu Nov 14 16:23:52 2019
+++ src/sys/arch/amd64/include/cpu.h Thu Nov 21 19:23:58 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: cpu.h,v 1.65 2019/11/14 16:23:52 maxv Exp $ */
+/* $NetBSD: cpu.h,v 1.66 2019/11/21 19:23:58 ad Exp $ */
/*-
* Copyright (c) 1990 The Regents of the University of California.
@@ -82,21 +82,9 @@ x86_curlwp(void)
(*(struct cpu_info * const *)offsetof(struct cpu_info, ci_curlwp)));
return l;
}
-
-__inline static void __unused
-cpu_set_curpri(int pri)
-{
-
- __asm volatile(
- "movl %1, %%gs:%0" :
- "=m" (*(struct cpu_info *)offsetof(struct cpu_info, ci_schedstate.spc_curpriority)) :
- "r" (pri)
- );
-}
#else
struct cpu_info *x86_curcpu(void);
lwp_t *x86_curlwp(void);
-void cpu_set_curpri(int);
#endif
#endif /* __GNUC__ && !_MODULE */
Index: src/sys/arch/amiga/amiga/trap.c
diff -u src/sys/arch/amiga/amiga/trap.c:1.137 src/sys/arch/amiga/amiga/trap.c:1.138
--- src/sys/arch/amiga/amiga/trap.c:1.137 Sat Apr 6 03:06:24 2019
+++ src/sys/arch/amiga/amiga/trap.c Thu Nov 21 19:23:58 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: trap.c,v 1.137 2019/04/06 03:06:24 thorpej Exp $ */
+/* $NetBSD: trap.c,v 1.138 2019/11/21 19:23:58 ad Exp $ */
/*
* Copyright (c) 1988 University of Utah.
@@ -45,7 +45,7 @@
#include "opt_m68k_arch.h"
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.137 2019/04/06 03:06:24 thorpej Exp $");
+__KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.138 2019/11/21 19:23:58 ad Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -691,9 +691,6 @@ trap(struct frame *fp, int type, u_int c
l->l_pflag &= ~LP_OWEUPC;
ADDUPROF(l);
}
- if (curcpu()->ci_want_resched)
- preempt();
-
userret(l, fp->f_pc, sticks);
return;
/*
Index: src/sys/arch/arm/arm/ast.c
diff -u src/sys/arch/arm/arm/ast.c:1.30 src/sys/arch/arm/arm/ast.c:1.31
--- src/sys/arch/arm/arm/ast.c:1.30 Wed Jan 24 09:04:44 2018
+++ src/sys/arch/arm/arm/ast.c Thu Nov 21 19:23:59 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: ast.c,v 1.30 2018/01/24 09:04:44 skrll Exp $ */
+/* $NetBSD: ast.c,v 1.31 2019/11/21 19:23:59 ad Exp $ */
/*
* Copyright (c) 1994,1995 Mark Brinicombe
@@ -41,7 +41,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ast.c,v 1.30 2018/01/24 09:04:44 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ast.c,v 1.31 2019/11/21 19:23:59 ad Exp $");
#include "opt_ddb.h"
@@ -119,7 +119,6 @@ ast(struct trapframe *tf)
ci->ci_data.cpu_ntrap++;
KDASSERT(ci->ci_cpl == IPL_NONE);
- const int want_resched = ci->ci_want_resched;
#ifdef __HAVE_PREEMPTION
kpreempt_enable();
#endif
@@ -129,8 +128,5 @@ ast(struct trapframe *tf)
ADDUPROF(l);
}
- /* Allow a forced task switch. */
- if (want_resched)
- preempt();
userret(l);
}
Index: src/sys/arch/arm/include/cpu.h
diff -u src/sys/arch/arm/include/cpu.h:1.101 src/sys/arch/arm/include/cpu.h:1.102
--- src/sys/arch/arm/include/cpu.h:1.101 Sat Oct 19 18:04:26 2019
+++ src/sys/arch/arm/include/cpu.h Thu Nov 21 19:23:59 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: cpu.h,v 1.101 2019/10/19 18:04:26 jmcneill Exp $ */
+/* $NetBSD: cpu.h,v 1.102 2019/11/21 19:23:59 ad Exp $ */
/*
* Copyright (c) 1994-1996 Mark Brinicombe.
@@ -315,9 +315,6 @@ void cpu_proc_fork(struct proc *, struct
#define cpu_need_proftick(l) ((l)->l_pflag |= LP_OWEUPC, \
setsoftast((l)->l_cpu))
-/* for preeemption. */
-void cpu_set_curpri(int);
-
/*
* We've already preallocated the stack for the idlelwps for additional CPUs.
* This hook allows to return them.
Index: src/sys/arch/atari/atari/trap.c
diff -u src/sys/arch/atari/atari/trap.c:1.115 src/sys/arch/atari/atari/trap.c:1.116
--- src/sys/arch/atari/atari/trap.c:1.115 Sat Apr 6 03:06:25 2019
+++ src/sys/arch/atari/atari/trap.c Thu Nov 21 19:23:59 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: trap.c,v 1.115 2019/04/06 03:06:25 thorpej Exp $ */
+/* $NetBSD: trap.c,v 1.116 2019/11/21 19:23:59 ad Exp $ */
/*
* Copyright (c) 1988 University of Utah.
@@ -39,7 +39,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.115 2019/04/06 03:06:25 thorpej Exp $");
+__KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.116 2019/11/21 19:23:59 ad Exp $");
#include "opt_ddb.h"
#include "opt_execfmt.h"
@@ -545,8 +545,6 @@ trap(struct frame *fp, int type, u_int c
l->l_pflag &= ~LP_OWEUPC;
ADDUPROF(l);
}
- if (curcpu()->ci_want_resched)
- preempt();
goto out;
/*
* Kernel/User page fault
Index: src/sys/arch/cesfic/cesfic/trap.c
diff -u src/sys/arch/cesfic/cesfic/trap.c:1.59 src/sys/arch/cesfic/cesfic/trap.c:1.60
--- src/sys/arch/cesfic/cesfic/trap.c:1.59 Sat Apr 6 03:06:25 2019
+++ src/sys/arch/cesfic/cesfic/trap.c Thu Nov 21 19:23:59 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: trap.c,v 1.59 2019/04/06 03:06:25 thorpej Exp $ */
+/* $NetBSD: trap.c,v 1.60 2019/11/21 19:23:59 ad Exp $ */
/*
* Copyright (c) 1988 University of Utah.
@@ -39,7 +39,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.59 2019/04/06 03:06:25 thorpej Exp $");
+__KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.60 2019/11/21 19:23:59 ad Exp $");
#include "opt_ddb.h"
#include "opt_execfmt.h"
@@ -503,8 +503,6 @@ trap(struct frame *fp, int type, unsigne
l->l_pflag &= ~LP_OWEUPC;
ADDUPROF(l);
}
- if (curcpu()->ci_want_resched)
- preempt();
goto out;
case T_MMUFLT: /* kernel mode page fault */
Index: src/sys/arch/hp300/hp300/trap.c
diff -u src/sys/arch/hp300/hp300/trap.c:1.153 src/sys/arch/hp300/hp300/trap.c:1.154
--- src/sys/arch/hp300/hp300/trap.c:1.153 Sat Apr 6 03:06:25 2019
+++ src/sys/arch/hp300/hp300/trap.c Thu Nov 21 19:24:00 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: trap.c,v 1.153 2019/04/06 03:06:25 thorpej Exp $ */
+/* $NetBSD: trap.c,v 1.154 2019/11/21 19:24:00 ad Exp $ */
/*
* Copyright (c) 1988 University of Utah.
@@ -39,7 +39,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.153 2019/04/06 03:06:25 thorpej Exp $");
+__KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.154 2019/11/21 19:24:00 ad Exp $");
#include "opt_ddb.h"
#include "opt_execfmt.h"
@@ -525,8 +525,6 @@ trap(struct frame *fp, int type, u_int c
l->l_pflag &= ~LP_OWEUPC;
ADDUPROF(l);
}
- if (curcpu()->ci_want_resched)
- preempt();
goto out;
case T_MMUFLT: /* kernel mode page fault */
Index: src/sys/arch/hppa/hppa/trap.c
diff -u src/sys/arch/hppa/hppa/trap.c:1.111 src/sys/arch/hppa/hppa/trap.c:1.112
--- src/sys/arch/hppa/hppa/trap.c:1.111 Mon Apr 15 20:45:08 2019
+++ src/sys/arch/hppa/hppa/trap.c Thu Nov 21 19:24:00 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: trap.c,v 1.111 2019/04/15 20:45:08 skrll Exp $ */
+/* $NetBSD: trap.c,v 1.112 2019/11/21 19:24:00 ad Exp $ */
/*-
* Copyright (c) 2001, 2002 The NetBSD Foundation, Inc.
@@ -58,7 +58,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.111 2019/04/15 20:45:08 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.112 2019/11/21 19:24:00 ad Exp $");
/* #define INTRDEBUG */
/* #define TRAPDEBUG */
@@ -202,13 +202,8 @@ userret(struct lwp *l, register_t pc, u_
{
struct proc *p = l->l_proc;
- if (l->l_md.md_astpending) {
- l->l_md.md_astpending = 0;
- //curcpu()->ci_data.cpu_nast++;
-
- if (curcpu()->ci_want_resched)
- preempt();
- }
+ l->l_md.md_astpending = 0;
+ //curcpu()->ci_data.cpu_nast++;
mi_userret(l);
Index: src/sys/arch/i386/i386/cpufunc.S
diff -u src/sys/arch/i386/i386/cpufunc.S:1.37 src/sys/arch/i386/i386/cpufunc.S:1.38
--- src/sys/arch/i386/i386/cpufunc.S:1.37 Fri Nov 15 09:03:26 2019
+++ src/sys/arch/i386/i386/cpufunc.S Thu Nov 21 19:24:00 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: cpufunc.S,v 1.37 2019/11/15 09:03:26 maxv Exp $ */
+/* $NetBSD: cpufunc.S,v 1.38 2019/11/21 19:24:00 ad Exp $ */
/*-
* Copyright (c) 1998, 2007 The NetBSD Foundation, Inc.
@@ -38,7 +38,7 @@
#include <sys/errno.h>
#include <machine/asm.h>
-__KERNEL_RCSID(0, "$NetBSD: cpufunc.S,v 1.37 2019/11/15 09:03:26 maxv Exp $");
+__KERNEL_RCSID(0, "$NetBSD: cpufunc.S,v 1.38 2019/11/21 19:24:00 ad Exp $");
#include "opt_xen.h"
@@ -156,12 +156,6 @@ ENTRY(x86_curlwp)
ret
END(x86_curlwp)
-ENTRY(cpu_set_curpri)
- movl 4(%esp), %eax
- movl %eax, %fs:(CPU_INFO_CURPRIORITY)
- ret
-END(cpu_set_curpri)
-
ENTRY(__byte_swap_u32_variable)
movl 4(%esp), %eax
bswapl %eax
Index: src/sys/arch/i386/i386/trap.c
diff -u src/sys/arch/i386/i386/trap.c:1.302 src/sys/arch/i386/i386/trap.c:1.303
--- src/sys/arch/i386/i386/trap.c:1.302 Sat Jul 13 17:04:21 2019
+++ src/sys/arch/i386/i386/trap.c Thu Nov 21 19:24:00 2019
@@ -1,5 +1,5 @@
-/* $NetBSD: trap.c,v 1.302 2019/07/13 17:04:21 mlelstv Exp $ */
+/* $NetBSD: trap.c,v 1.303 2019/11/21 19:24:00 ad Exp $ */
/*-
* Copyright (c) 1998, 2000, 2005, 2006, 2007, 2008 The NetBSD Foundation, Inc.
@@ -69,7 +69,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.302 2019/07/13 17:04:21 mlelstv Exp $");
+__KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.303 2019/11/21 19:24:00 ad Exp $");
#include "opt_ddb.h"
#include "opt_kgdb.h"
@@ -537,10 +537,6 @@ kernelfault:
l->l_pflag &= ~LP_OWEUPC;
ADDUPROF(l);
}
- /* Allow a forced task switch. */
- if (curcpu()->ci_want_resched) {
- preempt();
- }
goto out;
case T_BOUND|T_USER:
Index: src/sys/arch/i386/include/cpu.h
diff -u src/sys/arch/i386/include/cpu.h:1.181 src/sys/arch/i386/include/cpu.h:1.182
--- src/sys/arch/i386/include/cpu.h:1.181 Mon Feb 11 14:59:32 2019
+++ src/sys/arch/i386/include/cpu.h Thu Nov 21 19:24:00 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: cpu.h,v 1.181 2019/02/11 14:59:32 cherry Exp $ */
+/* $NetBSD: cpu.h,v 1.182 2019/11/21 19:24:00 ad Exp $ */
/*-
* Copyright (c) 1990 The Regents of the University of California.
@@ -68,17 +68,6 @@ x86_curlwp(void)
(*(struct cpu_info * const *)offsetof(struct cpu_info, ci_curlwp)));
return l;
}
-
-__inline static void __unused
-cpu_set_curpri(int pri)
-{
-
- __asm volatile(
- "movl %1, %%fs:%0" :
- "=m" (*(struct cpu_info *)offsetof(struct cpu_info, ci_schedstate.spc_curpriority)) :
- "r" (pri)
- );
-}
#endif
#ifdef XENPV
Index: src/sys/arch/luna68k/luna68k/trap.c
diff -u src/sys/arch/luna68k/luna68k/trap.c:1.71 src/sys/arch/luna68k/luna68k/trap.c:1.72
--- src/sys/arch/luna68k/luna68k/trap.c:1.71 Sat Apr 6 03:06:25 2019
+++ src/sys/arch/luna68k/luna68k/trap.c Thu Nov 21 19:24:00 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: trap.c,v 1.71 2019/04/06 03:06:25 thorpej Exp $ */
+/* $NetBSD: trap.c,v 1.72 2019/11/21 19:24:00 ad Exp $ */
/*
* Copyright (c) 1988 University of Utah.
@@ -39,7 +39,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.71 2019/04/06 03:06:25 thorpej Exp $");
+__KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.72 2019/11/21 19:24:00 ad Exp $");
#include "opt_ddb.h"
#include "opt_kgdb.h"
@@ -453,8 +453,6 @@ trap(struct frame *fp, int type, unsigne
l->l_pflag &= ~LP_OWEUPC;
ADDUPROF(l);
}
- if (curcpu()->ci_want_resched)
- preempt();
goto out;
case T_MMUFLT: /* kernel mode page fault */
Index: src/sys/arch/mac68k/mac68k/trap.c
diff -u src/sys/arch/mac68k/mac68k/trap.c:1.149 src/sys/arch/mac68k/mac68k/trap.c:1.150
--- src/sys/arch/mac68k/mac68k/trap.c:1.149 Sat Apr 6 03:06:26 2019
+++ src/sys/arch/mac68k/mac68k/trap.c Thu Nov 21 19:24:00 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: trap.c,v 1.149 2019/04/06 03:06:26 thorpej Exp $ */
+/* $NetBSD: trap.c,v 1.150 2019/11/21 19:24:00 ad Exp $ */
/*
* Copyright (c) 1988 University of Utah.
@@ -39,7 +39,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.149 2019/04/06 03:06:26 thorpej Exp $");
+__KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.150 2019/11/21 19:24:00 ad Exp $");
#include "opt_ddb.h"
#include "opt_execfmt.h"
@@ -490,8 +490,6 @@ copyfault:
l->l_pflag &= ~LP_OWEUPC;
ADDUPROF(l);
}
- if (curcpu()->ci_want_resched)
- preempt();
goto out;
case T_MMUFLT: /* Kernel mode page fault */
Index: src/sys/arch/mips/include/cpu.h
diff -u src/sys/arch/mips/include/cpu.h:1.126 src/sys/arch/mips/include/cpu.h:1.127
--- src/sys/arch/mips/include/cpu.h:1.126 Sun Sep 16 09:25:46 2018
+++ src/sys/arch/mips/include/cpu.h Thu Nov 21 19:24:00 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: cpu.h,v 1.126 2018/09/16 09:25:46 skrll Exp $ */
+/* $NetBSD: cpu.h,v 1.127 2019/11/21 19:24:00 ad Exp $ */
/*-
* Copyright (c) 1992, 1993
@@ -251,11 +251,6 @@ struct pcb;
struct reg;
/*
- * Preempt the current process if in interrupt from user mode,
- * or after the current trap/syscall if in system mode.
- */
-void cpu_need_resched(struct cpu_info *, int);
-/*
* Notify the current lwp (l) that it has a signal pending,
* process as soon as possible.
*/
@@ -267,7 +262,6 @@ void cpu_signotify(struct lwp *);
* through trap, marking the proc as needing a profiling tick.
*/
void cpu_need_proftick(struct lwp *);
-void cpu_set_curpri(int);
/* VM related hooks */
void cpu_boot_secondary_processors(void);
Index: src/sys/arch/mvme68k/mvme68k/trap.c
diff -u src/sys/arch/mvme68k/mvme68k/trap.c:1.110 src/sys/arch/mvme68k/mvme68k/trap.c:1.111
--- src/sys/arch/mvme68k/mvme68k/trap.c:1.110 Sat Apr 6 03:06:26 2019
+++ src/sys/arch/mvme68k/mvme68k/trap.c Thu Nov 21 19:24:00 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: trap.c,v 1.110 2019/04/06 03:06:26 thorpej Exp $ */
+/* $NetBSD: trap.c,v 1.111 2019/11/21 19:24:00 ad Exp $ */
/*
* Copyright (c) 1988 University of Utah.
@@ -39,7 +39,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.110 2019/04/06 03:06:26 thorpej Exp $");
+__KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.111 2019/11/21 19:24:00 ad Exp $");
#include "opt_ddb.h"
#include "opt_execfmt.h"
@@ -515,8 +515,6 @@ trap(struct frame *fp, int type, unsigne
l->l_pflag &= ~LP_OWEUPC;
ADDUPROF(l);
}
- if (curcpu()->ci_want_resched)
- preempt();
goto out;
case T_MMUFLT: /* kernel mode page fault */
Index: src/sys/arch/news68k/news68k/trap.c
diff -u src/sys/arch/news68k/news68k/trap.c:1.71 src/sys/arch/news68k/news68k/trap.c:1.72
--- src/sys/arch/news68k/news68k/trap.c:1.71 Sat Apr 6 03:06:26 2019
+++ src/sys/arch/news68k/news68k/trap.c Thu Nov 21 19:24:00 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: trap.c,v 1.71 2019/04/06 03:06:26 thorpej Exp $ */
+/* $NetBSD: trap.c,v 1.72 2019/11/21 19:24:00 ad Exp $ */
/*
* Copyright (c) 1988 University of Utah.
@@ -39,7 +39,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.71 2019/04/06 03:06:26 thorpej Exp $");
+__KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.72 2019/11/21 19:24:00 ad Exp $");
#include "opt_ddb.h"
#include "opt_execfmt.h"
@@ -468,8 +468,6 @@ trap(struct frame *fp, int type, u_int c
l->l_pflag &= ~LP_OWEUPC;
ADDUPROF(l);
}
- if (curcpu()->ci_want_resched)
- preempt();
goto out;
case T_MMUFLT: /* kernel mode page fault */
Index: src/sys/arch/next68k/next68k/trap.c
diff -u src/sys/arch/next68k/next68k/trap.c:1.90 src/sys/arch/next68k/next68k/trap.c:1.91
--- src/sys/arch/next68k/next68k/trap.c:1.90 Sat Apr 6 03:06:26 2019
+++ src/sys/arch/next68k/next68k/trap.c Thu Nov 21 19:24:01 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: trap.c,v 1.90 2019/04/06 03:06:26 thorpej Exp $ */
+/* $NetBSD: trap.c,v 1.91 2019/11/21 19:24:01 ad Exp $ */
/*
* This file was taken from mvme68k/mvme68k/trap.c
@@ -46,7 +46,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.90 2019/04/06 03:06:26 thorpej Exp $");
+__KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.91 2019/11/21 19:24:01 ad Exp $");
#include "opt_ddb.h"
#include "opt_execfmt.h"
@@ -506,8 +506,6 @@ trap(struct frame *fp, int type, unsigne
l->l_pflag &= ~LP_OWEUPC;
ADDUPROF(l);
}
- if (curcpu()->ci_want_resched)
- preempt();
goto out;
case T_MMUFLT: /* kernel mode page fault */
Index: src/sys/arch/or1k/include/cpu.h
diff -u src/sys/arch/or1k/include/cpu.h:1.2 src/sys/arch/or1k/include/cpu.h:1.3
--- src/sys/arch/or1k/include/cpu.h:1.2 Thu Apr 19 21:50:07 2018
+++ src/sys/arch/or1k/include/cpu.h Thu Nov 21 19:24:01 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: cpu.h,v 1.2 2018/04/19 21:50:07 christos Exp $ */
+/* $NetBSD: cpu.h,v 1.3 2019/11/21 19:24:01 ad Exp $ */
/*-
* Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -84,7 +84,6 @@ cpu_number(void)
#endif
}
-void cpu_set_curpri(int);
void cpu_proc_fork(struct proc *, struct proc *);
void cpu_signotify(struct lwp *);
void cpu_need_proftick(struct lwp *l);
Index: src/sys/arch/riscv/include/cpu.h
diff -u src/sys/arch/riscv/include/cpu.h:1.5 src/sys/arch/riscv/include/cpu.h:1.6
--- src/sys/arch/riscv/include/cpu.h:1.5 Sat Jun 1 12:42:28 2019
+++ src/sys/arch/riscv/include/cpu.h Thu Nov 21 19:24:01 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: cpu.h,v 1.5 2019/06/01 12:42:28 maxv Exp $ */
+/* $NetBSD: cpu.h,v 1.6 2019/11/21 19:24:01 ad Exp $ */
/*-
* Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -103,7 +103,6 @@ cpu_number(void)
#endif
}
-void cpu_set_curpri(int);
void cpu_proc_fork(struct proc *, struct proc *);
void cpu_signotify(struct lwp *);
void cpu_need_proftick(struct lwp *l);
Index: src/sys/arch/riscv/riscv/trap.c
diff -u src/sys/arch/riscv/riscv/trap.c:1.3 src/sys/arch/riscv/riscv/trap.c:1.4
--- src/sys/arch/riscv/riscv/trap.c:1.3 Sun Jun 16 07:42:52 2019
+++ src/sys/arch/riscv/riscv/trap.c Thu Nov 21 19:24:01 2019
@@ -32,7 +32,7 @@
#define __PMAP_PRIVATE
#define __UFETCHSTORE_PRIVATE
-__RCSID("$NetBSD: trap.c,v 1.3 2019/06/16 07:42:52 maxv Exp $");
+__RCSID("$NetBSD: trap.c,v 1.4 2019/11/21 19:24:01 ad Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -446,10 +446,6 @@ cpu_ast(struct trapframe *tf)
curlwp->l_pflag &= ~LP_OWEUPC;
ADDUPROF(curlwp);
}
-
- if (ci->ci_want_resched) {
- preempt();
- }
}
void
Index: src/sys/arch/sh3/sh3/exception.c
diff -u src/sys/arch/sh3/sh3/exception.c:1.67 src/sys/arch/sh3/sh3/exception.c:1.68
--- src/sys/arch/sh3/sh3/exception.c:1.67 Sat Apr 6 03:06:27 2019
+++ src/sys/arch/sh3/sh3/exception.c Thu Nov 21 19:24:01 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: exception.c,v 1.67 2019/04/06 03:06:27 thorpej Exp $ */
+/* $NetBSD: exception.c,v 1.68 2019/11/21 19:24:01 ad Exp $ */
/*-
* Copyright (c) 2002 The NetBSD Foundation, Inc. All rights reserved.
@@ -79,7 +79,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: exception.c,v 1.67 2019/04/06 03:06:27 thorpej Exp $");
+__KERNEL_RCSID(0, "$NetBSD: exception.c,v 1.68 2019/11/21 19:24:01 ad Exp $");
#include "opt_ddb.h"
#include "opt_kgdb.h"
@@ -480,11 +480,6 @@ ast(struct lwp *l, struct trapframe *tf)
ADDUPROF(l);
}
- if (l->l_cpu->ci_want_resched) {
- /* We are being preempted. */
- preempt();
- }
-
userret(l);
}
}
Index: src/sys/arch/sparc/include/userret.h
diff -u src/sys/arch/sparc/include/userret.h:1.8 src/sys/arch/sparc/include/userret.h:1.9
--- src/sys/arch/sparc/include/userret.h:1.8 Mon Nov 5 20:37:48 2007
+++ src/sys/arch/sparc/include/userret.h Thu Nov 21 19:24:01 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: userret.h,v 1.8 2007/11/05 20:37:48 ad Exp $ */
+/* $NetBSD: userret.h,v 1.9 2019/11/21 19:24:01 ad Exp $ */
/*
* Copyright (c) 1996
@@ -63,7 +63,6 @@ userret(struct lwp *l, int pc, u_quad_t
{
struct proc *p = l->l_proc;
- again:
mi_userret(l);
if (cpuinfo.ci_want_ast) {
@@ -73,13 +72,6 @@ userret(struct lwp *l, int pc, u_quad_t
ADDUPROF(l);
}
}
- if (cpuinfo.ci_want_resched) {
- /*
- * We are being preempted.
- */
- preempt();
- goto again;
- }
/*
* If profiling, charge recent system time to the trapped pc.
Index: src/sys/arch/sparc64/sparc64/trap.c
diff -u src/sys/arch/sparc64/sparc64/trap.c:1.191 src/sys/arch/sparc64/sparc64/trap.c:1.192
--- src/sys/arch/sparc64/sparc64/trap.c:1.191 Fri Feb 15 16:36:33 2019
+++ src/sys/arch/sparc64/sparc64/trap.c Thu Nov 21 19:24:01 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: trap.c,v 1.191 2019/02/15 16:36:33 hannken Exp $ */
+/* $NetBSD: trap.c,v 1.192 2019/11/21 19:24:01 ad Exp $ */
/*
* Copyright (c) 1996-2002 Eduardo Horvath. All rights reserved.
@@ -50,7 +50,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.191 2019/02/15 16:36:33 hannken Exp $");
+__KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.192 2019/11/21 19:24:01 ad Exp $");
#include "opt_ddb.h"
#include "opt_multiprocessor.h"
@@ -613,8 +613,6 @@ dopanic:
l->l_pflag &= ~LP_OWEUPC;
ADDUPROF(l);
}
- if (want_resched)
- preempt();
break;
case T_INST_EXCEPT:
Index: src/sys/arch/sun2/sun2/trap.c
diff -u src/sys/arch/sun2/sun2/trap.c:1.45 src/sys/arch/sun2/sun2/trap.c:1.46
--- src/sys/arch/sun2/sun2/trap.c:1.45 Sat Apr 6 03:06:27 2019
+++ src/sys/arch/sun2/sun2/trap.c Thu Nov 21 19:24:01 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: trap.c,v 1.45 2019/04/06 03:06:27 thorpej Exp $ */
+/* $NetBSD: trap.c,v 1.46 2019/11/21 19:24:01 ad Exp $ */
/*
* Copyright (c) 1982, 1986, 1990, 1993
@@ -78,7 +78,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.45 2019/04/06 03:06:27 thorpej Exp $");
+__KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.46 2019/11/21 19:24:01 ad Exp $");
#include "opt_ddb.h"
#include "opt_execfmt.h"
@@ -138,7 +138,6 @@ void straytrap(struct trapframe);
static void userret(struct lwp *, struct trapframe *, u_quad_t);
int astpending;
-int want_resched;
const char *trap_type[] = {
"Bus error",
@@ -455,8 +454,6 @@ trap(struct trapframe *tf, int type, u_i
l->l_pflag &= ~LP_OWEUPC;
ADDUPROF(l);
}
- if (curcpu()->ci_want_resched)
- preempt();
goto douret;
case T_MMUFLT: /* kernel mode page fault */
Index: src/sys/arch/sun3/sun3/trap.c
diff -u src/sys/arch/sun3/sun3/trap.c:1.145 src/sys/arch/sun3/sun3/trap.c:1.146
--- src/sys/arch/sun3/sun3/trap.c:1.145 Sat Apr 6 03:06:28 2019
+++ src/sys/arch/sun3/sun3/trap.c Thu Nov 21 19:24:01 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: trap.c,v 1.145 2019/04/06 03:06:28 thorpej Exp $ */
+/* $NetBSD: trap.c,v 1.146 2019/11/21 19:24:01 ad Exp $ */
/*
* Copyright (c) 1982, 1986, 1990, 1993
@@ -78,7 +78,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.145 2019/04/06 03:06:28 thorpej Exp $");
+__KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.146 2019/11/21 19:24:01 ad Exp $");
#include "opt_ddb.h"
#include "opt_execfmt.h"
@@ -463,8 +463,6 @@ trap(struct trapframe *tf, int type, u_i
l->l_pflag &= ~LP_OWEUPC;
ADDUPROF(l);
}
- if (curcpu()->ci_want_resched)
- preempt();
goto douret;
case T_MMUFLT: /* kernel mode page fault */
Index: src/sys/arch/usermode/usermode/trap.c
diff -u src/sys/arch/usermode/usermode/trap.c:1.70 src/sys/arch/usermode/usermode/trap.c:1.71
--- src/sys/arch/usermode/usermode/trap.c:1.70 Wed Aug 1 09:44:31 2018
+++ src/sys/arch/usermode/usermode/trap.c Thu Nov 21 19:24:02 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: trap.c,v 1.70 2018/08/01 09:44:31 reinoud Exp $ */
+/* $NetBSD: trap.c,v 1.71 2019/11/21 19:24:02 ad Exp $ */
/*-
* Copyright (c) 2011 Reinoud Zandijk <[email protected]>
@@ -27,7 +27,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.70 2018/08/01 09:44:31 reinoud Exp $");
+__KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.71 2019/11/21 19:24:02 ad Exp $");
#include <sys/types.h>
#include <sys/param.h>
@@ -202,12 +202,6 @@ ast(struct lwp *l)
}
#endif
- /* allow a forced task switch */
- if (curcpu()->ci_want_resched) {
- curcpu()->ci_want_resched = 0;
- preempt();
- /* returns here! */
- }
KASSERT(l == curlwp); KASSERT(l);
pcb = lwp_getpcb(l); KASSERT(pcb);
mi_userret(l);
Index: src/sys/arch/vax/vax/trap.c
diff -u src/sys/arch/vax/vax/trap.c:1.135 src/sys/arch/vax/vax/trap.c:1.136
--- src/sys/arch/vax/vax/trap.c:1.135 Mon May 22 16:53:05 2017
+++ src/sys/arch/vax/vax/trap.c Thu Nov 21 19:24:02 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: trap.c,v 1.135 2017/05/22 16:53:05 ragge Exp $ */
+/* $NetBSD: trap.c,v 1.136 2019/11/21 19:24:02 ad Exp $ */
/*
* Copyright (c) 1994 Ludd, University of Lule}, Sweden.
@@ -28,7 +28,7 @@
/* All bugs are subject to removal without further notice */
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.135 2017/05/22 16:53:05 ragge Exp $");
+__KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.136 2019/11/21 19:24:02 ad Exp $");
#include "opt_ddb.h"
#include "opt_multiprocessor.h"
@@ -317,8 +317,6 @@ if(faultdebug)printf("trap accflt type %
case T_ASTFLT|T_USER:
mtpr(AST_NO,PR_ASTLVL);
trapsig = false;
- if (curcpu()->ci_want_resched)
- preempt();
break;
#ifdef DDB
Index: src/sys/arch/x68k/x68k/trap.c
diff -u src/sys/arch/x68k/x68k/trap.c:1.108 src/sys/arch/x68k/x68k/trap.c:1.109
--- src/sys/arch/x68k/x68k/trap.c:1.108 Sat Apr 6 03:06:28 2019
+++ src/sys/arch/x68k/x68k/trap.c Thu Nov 21 19:24:02 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: trap.c,v 1.108 2019/04/06 03:06:28 thorpej Exp $ */
+/* $NetBSD: trap.c,v 1.109 2019/11/21 19:24:02 ad Exp $ */
/*
* Copyright (c) 1988 University of Utah.
@@ -39,7 +39,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.108 2019/04/06 03:06:28 thorpej Exp $");
+__KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.109 2019/11/21 19:24:02 ad Exp $");
#include "opt_ddb.h"
#include "opt_kgdb.h"
@@ -522,8 +522,6 @@ trap(struct frame *fp, int type, unsigne
l->l_pflag &= ~LP_OWEUPC;
ADDUPROF(l);
}
- if (curcpu()->ci_want_resched)
- preempt();
goto out;
case T_MMUFLT: /* kernel mode page fault */
Index: src/sys/sys/userret.h
diff -u src/sys/sys/userret.h:1.28 src/sys/sys/userret.h:1.29
--- src/sys/sys/userret.h:1.28 Fri May 17 03:34:27 2019
+++ src/sys/sys/userret.h Thu Nov 21 19:24:02 2019
@@ -1,7 +1,7 @@
-/* $NetBSD: userret.h,v 1.28 2019/05/17 03:34:27 ozaki-r Exp $ */
+/* $NetBSD: userret.h,v 1.29 2019/11/21 19:24:02 ad Exp $ */
/*-
- * Copyright (c) 1998, 2000, 2003, 2006, 2008 The NetBSD Foundation, Inc.
+ * Copyright (c) 1998, 2000, 2003, 2006, 2008, 2019 The NetBSD Foundation, Inc.
* All rights reserved.
*
* This code is derived from software contributed to The NetBSD Foundation
@@ -70,48 +70,39 @@
#include <sys/psref.h>
/*
- * Define the MI code needed before returning to user mode, for
- * trap and syscall.
+ * Define the MI code needed before returning to user mode, for trap and
+ * syscall.
+ *
+ * We handle "exceptional" events: pending signals, stop/exit actions, etc.
+ * Note that the event must be flagged BEFORE any AST is posted as we are
+ * reading unlocked.
*/
static __inline void
mi_userret(struct lwp *l)
{
-#ifndef __HAVE_PREEMPTION
struct cpu_info *ci;
-#endif
+ KPREEMPT_DISABLE(l);
+ ci = l->l_cpu;
KASSERT(l->l_blcnt == 0);
-#ifndef __HAVE_PREEMPTION
- KASSERT(curcpu()->ci_biglock_count == 0);
-#endif
-
- /*
- * Handle "exceptional" events: pending signals, stop/exit actions,
- * etc. Note that the event must be flagged BEFORE any AST is
- * posted as we are reading unlocked.
- */
-#ifdef __HAVE_PREEMPTION
- if (__predict_false(l->l_flag & LW_USERRET)) {
- lwp_userret(l);
+ KASSERT(ci->ci_biglock_count == 0);
+ if (__predict_false(ci->ci_want_resched)) {
+ preempt();
+ ci = l->l_cpu;
}
- l->l_kpriority = false;
- /*
- * cpu_set_curpri(prio) is a MD optimized version of:
- *
- * kpreempt_disable();
- * curcpu()->ci_schedstate.spc_curpriority = prio;
- * kpreempt_enable();
- */
- cpu_set_curpri(l->l_priority); /* XXX this needs to die */
+#ifdef __HAVE_FAST_SOFTINTS
+ if (__predict_false(l->l_flag & LW_USERRET)) {
#else
- ci = l->l_cpu;
if (((l->l_flag & LW_USERRET) | ci->ci_data.cpu_softints) != 0) {
+#endif
+ KPREEMPT_ENABLE(l);
lwp_userret(l);
+ KPREEMPT_DISABLE(l);
ci = l->l_cpu;
}
l->l_kpriority = false;
ci->ci_schedstate.spc_curpriority = l->l_priority;
-#endif
+ KPREEMPT_ENABLE(l);
LOCKDEBUG_BARRIER(NULL, 0);
KASSERT(l->l_nopreempt == 0);