Module Name: src Committed By: mhitch Date: Sun Oct 4 17:00:31 UTC 2009
Modified Files: src/sys/arch/alpha/alpha: pmap.c Log Message: IPI interrupts occur above IPL_VM, so using IPL_VM in for the tlb shootdown queue mutex doesn't work very well. I get various deadlocks and corrupted queue entries. Change to IPL_SCHED [IPL_CLOCK] to block IPI interrupts while the cpu is mucking with the shootdown queue. To generate a diff of this commit: cvs rdiff -u -r1.242 -r1.243 src/sys/arch/alpha/alpha/pmap.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/alpha/alpha/pmap.c diff -u src/sys/arch/alpha/alpha/pmap.c:1.242 src/sys/arch/alpha/alpha/pmap.c:1.243 --- src/sys/arch/alpha/alpha/pmap.c:1.242 Thu Sep 10 22:27:11 2009 +++ src/sys/arch/alpha/alpha/pmap.c Sun Oct 4 17:00:31 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: pmap.c,v 1.242 2009/09/10 22:27:11 mhitch Exp $ */ +/* $NetBSD: pmap.c,v 1.243 2009/10/04 17:00:31 mhitch Exp $ */ /*- * Copyright (c) 1998, 1999, 2000, 2001, 2007, 2008 The NetBSD Foundation, Inc. @@ -140,7 +140,7 @@ #include <sys/cdefs.h> /* RCS ID & Copyright macro defns */ -__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.242 2009/09/10 22:27:11 mhitch Exp $"); +__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.243 2009/10/04 17:00:31 mhitch Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -962,7 +962,7 @@ for (i = 0; i < ALPHA_MAXPROCS; i++) { TAILQ_INIT(&pmap_tlb_shootdown_q[i].pq_head); mutex_init(&pmap_tlb_shootdown_q[i].pq_lock, MUTEX_DEFAULT, - IPL_VM); + IPL_SCHED); } #endif