From daf32f501077e34ccc924ef8e071f92d841be462 Mon Sep 17 00:00:00 2001 From: mhitch Date: Wed, 25 Feb 2009 19:56:49 +0000 Subject: [PATCH] The ci_want_resched check and preempt() call had been removed from userret() which resulted in no process preemption (and probably contributed to the signal trap loop locking up the machine that was recently fixed). Put the check and preempt() call in the AST trap handler to restore process preemption. --- sys/arch/vax/vax/trap.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/sys/arch/vax/vax/trap.c b/sys/arch/vax/vax/trap.c index 7b43eabff2fe..1b02d131e829 100644 --- a/sys/arch/vax/vax/trap.c +++ b/sys/arch/vax/vax/trap.c @@ -1,4 +1,4 @@ -/* $NetBSD: trap.c,v 1.118 2009/02/18 17:32:12 mhitch Exp $ */ +/* $NetBSD: trap.c,v 1.119 2009/02/25 19:56:49 mhitch Exp $ */ /* * Copyright (c) 1994 Ludd, University of Lule}, Sweden. @@ -33,7 +33,7 @@ /* All bugs are subject to removal without further notice */ #include -__KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.118 2009/02/18 17:32:12 mhitch Exp $"); +__KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.119 2009/02/25 19:56:49 mhitch Exp $"); #include "opt_ddb.h" #include "opt_multiprocessor.h" @@ -303,6 +303,8 @@ if(faultdebug)printf("trap accflt type %lx, code %lx, pc %lx, psl %lx\n", case T_ASTFLT|T_USER: mtpr(AST_NO,PR_ASTLVL); trapsig = false; + if (curcpu()->ci_want_resched) + preempt(); break; #ifdef DDB