On Jul 24, 2006, at 3:38 PM, John Baldwin wrote:
On Monday 24 July 2006 18:25, Marcel Moolenaar wrote:
marcel 2006-07-24 22:25:16 UTC
FreeBSD src repository
Modified files:
sys/dev/scc scc_core.c
Log:
If we have multiple interrupt resources, like for Z8530 clones
on the
mac-io bus, we cannot setup FAST interrupt handlers. This
because we
use spinlocks to protect the hardware and all interrupt
resources are
assigned the same interrupt handler. When the interrupt handler is
invoked for interrupt X, it could be preempted for interrupt Y
while
it was holding the lock (where X and Y are the interrupt resources
corresponding a single instance of this driver). This is a
deadlock.
By only using a MPSAFE handler in that case we prevent preemption.
Umm, if you have interrupts preempting a spin lock you are going to
have a lot
more problems. :( spinlock_enter() is supposed to either block or
defer any
interrupts that could try to acquire a spin lock or interfere with
a held
spin lock until spinlock_exit().
Doh! You're right. I think I got confused with critical regions.
Thanks for pointing it out.
--
Marcel Moolenaar USPA: A-39004 [EMAIL PROTECTED]
_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/cvs-all
To unsubscribe, send any mail to "[EMAIL PROTECTED]"