From owner-freebsd-current Tue Feb 26 0:10:43 2002 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 8AD2637B402; Tue, 26 Feb 2002 00:10:38 -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 TAA21547; Tue, 26 Feb 2002 19:10:34 +1100 Date: Tue, 26 Feb 2002 19:10:59 +1100 (EST) From: Bruce Evans X-X-Sender: To: John Baldwin Cc: Matthew Dillon , , Seigo Tanimura , Bosko Milekic , Alfred Perlstein , Terry Lambert Subject: Re: Patch for critical_enter()/critical_exit() & interrupt assem In-Reply-To: Message-ID: <20020226185416.P43865-100000@gamplex.bde.org> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Sender: owner-freebsd-current@FreeBSD.ORG Precedence: bulk List-ID: List-Archive: (Web Archive) List-Help: (List Instructions) List-Subscribe: List-Unsubscribe: X-Loop: FreeBSD.ORG On Tue, 26 Feb 2002, John Baldwin wrote: > The critical section stuff currently in current is part of the original > preemption patches I wrote at Usenix last year. They aren't in the tree > because they aren't stable yet. We still have problems on the alpha and > problems with IPI deadlocks on SMP machines that need to be worked out. Since > this API is still very much in flux I'd prefer to keep it simple for now and > not make the code overly complex with optimizations until after we have settled > on the design. The change is mostly part of the design change needed to un-break fast interrupt handlers. critical_enter() mask not mask hardware interrupts for the same reason than splhigh() must not mask them: there is too much MI code that thinks it is critical and short but really isn't (e.g., everything under spinlocks in -current). Changing cpu_critical_enter() to a null version to prevent spinlocks masking interrupts doesn't work very well because it is used for other things that really do need to mask interrupts. Having 2 levels for cpu_critical_enter() (on that masks normal interrupts and one that masks fast interrupts) would work but I think there are already too many levels of critical_enter()s. Bruce To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-current" in the body of the message