From owner-freebsd-current Fri Jan 19 9:48: 3 2001 Delivered-To: freebsd-current@freebsd.org Received: from mailman.zeta.org.au (mailman.zeta.org.au [203.26.10.16]) by hub.freebsd.org (Postfix) with ESMTP id 39B8637B402; Fri, 19 Jan 2001 09:47:42 -0800 (PST) Received: from bde.zeta.org.au (bde.zeta.org.au [203.2.228.102]) by mailman.zeta.org.au (8.9.3/8.8.7) with ESMTP id EAA32665; Sat, 20 Jan 2001 04:47:35 +1100 Date: Sat, 20 Jan 2001 04:48:03 +1100 (EST) From: Bruce Evans X-Sender: bde@besplex.bde.org To: John Baldwin Cc: Poul-Henning Kamp , peter@netplex.com.au, bright@wintelcom.net, current@FreeBSD.ORG, arch@FreeBSD.ORG, rjesup@wgate.com, Soren Schmidt Subject: Re: HEADS-UP: await/asleep removal imminent In-Reply-To: Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Sender: owner-freebsd-current@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.ORG On Fri, 19 Jan 2001, John Baldwin wrote: > rummage together a vinum stripe to build on or some such. However, after > thinking some more, even in a preemptive kernel, Giant will protect against the > *strategy() race you brought up, because we won't get a context switch in > kernel mode that releases Giant until either we exit the kernel or we call > tsleep(). The interrupt handler will block on Giant when its thread runs, so > it won't run until the top half finishes and returns. Does that make sense? This would be a bug in the preemptive kernel. To work as well as old kernels, everything that was not run because of a lock must be run when the lock is released. This corresponds to splx() running all software interrupt handlers that became runnable. Bruce To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-current" in the body of the message