From owner-freebsd-current Sun Sep 20 11:33:54 1998 Return-Path: Received: (from majordom@localhost) by hub.freebsd.org (8.8.8/8.8.8) id LAA11126 for freebsd-current-outgoing; Sun, 20 Sep 1998 11:33:54 -0700 (PDT) (envelope-from owner-freebsd-current@FreeBSD.ORG) Received: from godzilla.zeta.org.au (godzilla.zeta.org.au [203.15.68.22]) by hub.freebsd.org (8.8.8/8.8.8) with ESMTP id LAA11078 for ; Sun, 20 Sep 1998 11:33:36 -0700 (PDT) (envelope-from bde@godzilla.zeta.org.au) Received: (from bde@localhost) by godzilla.zeta.org.au (8.8.7/8.8.7) id EAA31365; Mon, 21 Sep 1998 04:33:06 +1000 Date: Mon, 21 Sep 1998 04:33:06 +1000 From: Bruce Evans Message-Id: <199809201833.EAA31365@godzilla.zeta.org.au> To: jhay@mikom.csir.co.za, jkh@time.cdrom.com Subject: Re: [CAM] Broken tagged queuing drive? Cc: current@FreeBSD.ORG, gibbs@plutotech.com, kato@ganko.eps.nagoya-u.ac.jp, mantar@netcom.com Sender: owner-freebsd-current@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.ORG >I also see it here on my dual P5 machine. It seems to be caused by the >latest version of isa/clock.c. If I go to the previous version (while >keeping the rest of the source the same), the panic disappear. It only >happens on the dual P5 machine, the 486 runs happily with the latest >version of isa/clock.c. Apparently it wasn't safe to use disable_intr()/enable_intr() under SMP, or SMP locking doesn't nest properly :(. The interrupt nesting is: clock interrupt -> normal interrupt masking, whatever that is for SMP ... disable cpu interrupts (known to be enabled to begin with) lock clock sometimes: i8254_get_timecount() -> save cpu interrupt mask disable cpu interrupts (nop) lock clock (oops?) ... unlock clock restore cpu interrupt mask unlock clock <- return enable cpu interrupts i8254_get_timecount(), getit() and set_timer_freq() are supposed to be callable with interrupts disabled. Apparently this never worked. It's probably unnecessary to lock the clock in clkintr() - the giant lock suffices. I should never have suggested turning disable_intr() into a macro to hide the locking. Bruce To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-current" in the body of the message