From owner-freebsd-smp Sat Aug 30 13:05:36 1997 Return-Path: Received: (from root@localhost) by hub.freebsd.org (8.8.7/8.8.7) id NAA00553 for smp-outgoing; Sat, 30 Aug 1997 13:05:36 -0700 (PDT) Received: from Ilsa.StevesCafe.com (Ilsa.StevesCafe.com [205.168.119.129]) by hub.freebsd.org (8.8.7/8.8.7) with ESMTP id NAA00548 for ; Sat, 30 Aug 1997 13:05:34 -0700 (PDT) Received: from Ilsa.StevesCafe.com (localhost [127.0.0.1]) by Ilsa.StevesCafe.com (8.8.7/8.8.5) with ESMTP id OAA16897; Sat, 30 Aug 1997 14:00:29 -0600 (MDT) Message-Id: <199708302000.OAA16897@Ilsa.StevesCafe.com> X-Mailer: exmh version 2.0gamma 1/27/96 From: Steve Passe To: Poul-Henning Kamp cc: smp@freebsd.org Subject: Re: HEADS UP: another set of changes. In-reply-to: Your message of "Sat, 30 Aug 1997 21:44:49 +0200." <7453.872970289@critter.freebsd.dk> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Date: Sat, 30 Aug 1997 14:00:29 -0600 Sender: owner-freebsd-smp@freebsd.org X-Loop: FreeBSD.org Precedence: bulk Hi, > >could you elaborate? Do you mean you expect my current disable_intr() > >stuff to recursively lock? I have run it for about 13 hours now, including > >a complete buildworld without problem. > > No, but I am pretty sure there are nested simple_lock() calls in the > vnode code. I am completely ignorant of the vnode code. Is this belief based on observed lockups? I tried using your(?) recursive MPgetlock stuff in place of simple locks for the disable_intr() code, but it locked b4 the first message came out of the boot sequence. I suspect its called well before cpuid is valid, which is necessary for that flavor to work. I'm pondering another variation of simplelock that looks something like: top: attempt to get the binary lock if successful set holder_id and return if fail compare holder_id to cpuid if same panic, we shouldn't be holding and asking for a binary lock else if legal (0 < holder_id < mp_ncpus) goto top else if smp_active panic, this shouldn't be else ignore, we're just early -- Steve Passe | powered by smp@csn.net | Symmetric MultiProcessor FreeBSD