Module Name: src Committed By: sborrill Date: Mon Oct 19 09:01:43 UTC 2009
Modified Files: src/sys/arch/sparc64/include [netbsd-5-0]: userret.h src/sys/arch/sparc64/sparc64 [netbsd-5-0]: trap.c Log Message: Pull up the following revisions(s) (requested by nakayama in ticket #1103): sys/arch/sparc64/include/userret.h: revision 1.9 sys/arch/sparc64/sparc64/trap.c: revision 1.158 Merge want_ast check in userret() into trap handler, and repeat preempt() call while want_resched is true. While there remove unnecessary #if 1. This should fix a performance degradation of disk I/O on heavy load. To generate a diff of this commit: cvs rdiff -u -r1.8 -r1.8.12.1 src/sys/arch/sparc64/include/userret.h cvs rdiff -u -r1.155 -r1.155.8.1 src/sys/arch/sparc64/sparc64/trap.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/sparc64/include/userret.h diff -u src/sys/arch/sparc64/include/userret.h:1.8 src/sys/arch/sparc64/include/userret.h:1.8.12.1 --- src/sys/arch/sparc64/include/userret.h:1.8 Mon Jun 30 14:12:20 2008 +++ src/sys/arch/sparc64/include/userret.h Mon Oct 19 09:01:43 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: userret.h,v 1.8 2008/06/30 14:12:20 nakayama Exp $ */ +/* $NetBSD: userret.h,v 1.8.12.1 2009/10/19 09:01:43 sborrill Exp $ */ /* * Copyright (c) 1996-2002 Eduardo Horvath. All rights reserved. @@ -63,14 +63,6 @@ mi_userret(l); - if (want_ast) { - want_ast = 0; - if (l->l_pflag & LP_OWEUPC) { - l->l_pflag &= ~LP_OWEUPC; - ADDUPROF(l); - } - } - /* * 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.155 src/sys/arch/sparc64/sparc64/trap.c:1.155.8.1 --- src/sys/arch/sparc64/sparc64/trap.c:1.155 Wed Oct 15 06:51:19 2008 +++ src/sys/arch/sparc64/sparc64/trap.c Mon Oct 19 09:01:43 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: trap.c,v 1.155 2008/10/15 06:51:19 wrstuden Exp $ */ +/* $NetBSD: trap.c,v 1.155.8.1 2009/10/19 09:01:43 sborrill 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.155 2008/10/15 06:51:19 wrstuden Exp $"); +__KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.155.8.1 2009/10/19 09:01:43 sborrill Exp $"); #include "opt_ddb.h" #include "opt_multiprocessor.h" @@ -618,12 +618,14 @@ #endif case T_AST: -#if 1 - if (want_resched) + if (l->l_pflag & LP_OWEUPC) { + l->l_pflag &= ~LP_OWEUPC; + ADDUPROF(l); + } + while (want_resched) preempt(); want_ast = 0; -#endif - break; /* the work is all in userret() */ + break; case T_ILLINST: case T_INST_EXCEPT: