Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 21 Sep 1998 04:33:06 +1000
From:      Bruce Evans <bde@zeta.org.au>
To:        jhay@mikom.csir.co.za, jkh@time.cdrom.com
Cc:        current@FreeBSD.ORG, gibbs@plutotech.com, kato@ganko.eps.nagoya-u.ac.jp, mantar@netcom.com
Subject:   Re: [CAM] Broken tagged queuing drive?
Message-ID:  <199809201833.EAA31365@godzilla.zeta.org.au>

next in thread | raw e-mail | index | archive | help
>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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199809201833.EAA31365>