Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. =================================================================== RCS file: /ftp/cvs/cvsroot/src/sys/kern/subr_pool.c,v rcsdiff: /ftp/cvs/cvsroot/src/sys/kern/subr_pool.c,v: warning: Unknown phrases like `commitid ...;' are present. retrieving revision 1.129.12.5 retrieving revision 1.133.4.2 diff -u -p -r1.129.12.5 -r1.133.4.2 --- src/sys/kern/subr_pool.c 2007/11/21 21:56:03 1.129.12.5 +++ src/sys/kern/subr_pool.c 2007/12/08 18:20:37 1.133.4.2 @@ -1,4 +1,4 @@ -/* $NetBSD: subr_pool.c,v 1.129.12.5 2007/11/21 21:56:03 joerg Exp $ */ +/* $NetBSD: subr_pool.c,v 1.133.4.2 2007/12/08 18:20:37 mjf Exp $ */ /*- * Copyright (c) 1997, 1999, 2000, 2002, 2007 The NetBSD Foundation, Inc. @@ -38,7 +38,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: subr_pool.c,v 1.129.12.5 2007/11/21 21:56:03 joerg Exp $"); +__KERNEL_RCSID(0, "$NetBSD: subr_pool.c,v 1.133.4.2 2007/12/08 18:20:37 mjf Exp $"); #include "opt_pool.h" #include "opt_poollog.h" @@ -802,7 +802,14 @@ pool_init(struct pool *pp, size_t size, pp->pr_entered_file = NULL; pp->pr_entered_line = 0; - mutex_init(&pp->pr_lock, MUTEX_DEFAULT, ipl); + /* + * XXXAD hack to prevent IP input processing from blocking. + */ + if (ipl == IPL_SOFTNET) { + mutex_init(&pp->pr_lock, MUTEX_DEFAULT, IPL_VM); + } else { + mutex_init(&pp->pr_lock, MUTEX_DEFAULT, ipl); + } cv_init(&pp->pr_cv, wchan); pp->pr_ipl = ipl; @@ -2040,7 +2047,14 @@ pool_cache_bootstrap(pool_cache_t pc, si palloc = &pool_allocator_nointr; pool_init(pp, size, align, align_offset, flags, wchan, palloc, ipl); - mutex_init(&pc->pc_lock, MUTEX_DEFAULT, pp->pr_ipl); + /* + * XXXAD hack to prevent IP input processing from blocking. + */ + if (ipl == IPL_SOFTNET) { + mutex_init(&pc->pc_lock, MUTEX_DEFAULT, IPL_VM); + } else { + mutex_init(&pc->pc_lock, MUTEX_DEFAULT, ipl); + } if (ctor == NULL) { ctor = (int (*)(void *, void *, int))nullop;